Python操作Excel表格的模塊xlrd的簡單介紹
處理數(shù)據(jù)對(duì)Python來說,比較容易,操作簡單,功能強(qiáng)大,短短幾行代碼,就可處理大量的數(shù)據(jù)信息,下面介紹Python處理Excel表格的一個(gè)模塊:xlrd。
一、xlrd簡介及安裝
xlrd是Python處理Excel表格數(shù)據(jù)的一個(gè)模塊,他可以對(duì)Excel數(shù)據(jù)進(jìn)行讀取,包括:
1、讀取Excel的行數(shù)、列數(shù)、行的值、列的值、
2、讀取單元格的值、數(shù)據(jù)類型
3、增加、刪除、修改表格數(shù)據(jù)
4、導(dǎo)出導(dǎo)入工作表等
xlrd的安裝比較簡單,只要打開cmd命令框,然后輸入:pip install xlrd即可,或者打開編譯器jupyter book,然后在代碼欄里輸入:pip install xlrd也可以安裝,然后在代碼欄里輸入如下代碼查看是否安裝成功(能看到版本號(hào)即表示安裝成功):
import xlrd
xlrd.__version__ # __ 是雙下劃線
二、xlrd函數(shù)介紹
1、open_workbook(path)
顧名思義,此函數(shù)就是打開工作表格,即打開一個(gè)Excel表,path為Excel文件的路徑。其操作如下:
import xlrd
xls = xlrd.open_workbook("file/編程語言排名.xls")
open_workbook()函數(shù)返回的是一個(gè)對(duì)象,即指向Excel工作表“編程語言排名.xls”的一個(gè)指針,有了這個(gè)對(duì)象,我們就可以對(duì)表格進(jìn)行各種操作了。
2、獲取Excel工作表中的sheet
獲取打開的工作表格中的sheet表有3種方法:
2.1、xls.sheets()[索引]:索引從 0 開始,對(duì)應(yīng)sheet1、sheet2、sheet3...
2.2、xls.sheet_by_index(索引):索引從 0 開始,對(duì)應(yīng)sheet1、sheet2、sheet3...
2.3、xls.sheet_by_name(sheet名稱):此前提是知道表格中的sheet名稱
以上返回的也是一個(gè)對(duì)象,即指向所獲取的sheet表格的指針,有了這個(gè)對(duì)象,就可以對(duì)sheet里的內(nèi)容進(jìn)行操作了,如獲取行數(shù)、列數(shù)、單元格內(nèi)容等,另外,可以用xls.sheet_names()獲取工作表格中的所有sheet名稱,如:
# 獲取工作表格的3種方法
sheet1 = xls.sheets()[0]
print(sheet1)
sheet2 = xls.sheet_by_index(0)
print(sheet2)
sheet3 = xls.sheet_by_name("2019年")
print(sheet3)
# 獲取工作表格的所有sheet名稱
sheet_name = xls.sheet_names()
print(sheet_name)
執(zhí)行結(jié)果:
3、nrows與ncols
我們都知道row和col是行和列,那么nrows和ncols就是行數(shù)和列數(shù)了,即我們用sheet.nrows和sheet.ncols就可以獲取我們所打開的工作表的函數(shù)和列數(shù),其操作如下:
sheet_names = xls.sheet_names() # 獲取所有 sheet 表格的名稱
for i in range(3):
sheet = xls.sheets()[i] # 獲取表格 sheetx 對(duì)象
rows = sheet.nrows # 獲取工作表格的行數(shù)
cols = sheet.ncols # 獲取工作表格的列數(shù)
print('表格 "{}" 總共有 {} 行,{} 列'.format(sheet_names[i],rows,cols)) # 打印輸出
執(zhí)行結(jié)果:
4、獲取行數(shù)據(jù)的函數(shù)
對(duì)行進(jìn)行數(shù)據(jù)獲取有以下函數(shù):
4.1、sheet.row(n):獲取第 n 行的數(shù)據(jù),其中 n 為行數(shù),從 0 開始,返回該行所有單元格數(shù)據(jù)組成的列表。
4.2、sheet.row_slice(n):獲取第 n 行的數(shù)據(jù),其中 n 為行數(shù),從 0 開始,返回該行所有單元格數(shù)據(jù)組成的列表。
4.3、sheet.row_types(rowx = n, start_colx = x, end_colx = y):獲取第 n 行的數(shù)據(jù)類型,其中 start_colx 和 end_colx(若為None則獲取到結(jié)束) 為列的范圍,即指定行數(shù) n,然后指定列的范圍 x 和 y,可以簡寫為:sheet.row_types(n,x,y),返回獲取的數(shù)據(jù)類型組成的列表。
注:總共有 5 種類型:0 empty,1 string,2 number,3 date,4 boolean,5 error
4.4、sheet.row_values(rowx = n, start_colx = x, end_colx = y):獲取第 n 行的數(shù)據(jù),其中 start_colx 和 end_colx(若為None則獲取到結(jié)束) 為列的范圍,即指定行數(shù) n,然后指定列的范圍 x 和 y,可以簡寫為:sheet.row_values(n,x,y)返回獲取的數(shù)據(jù)組成的列表。
4.5、sheet.row_len(n):獲取第 n 行的有效長度。注:列沒有此函數(shù)。
data = sheet1.row(0) # 獲取第 1 行的數(shù)據(jù)
print(data)
data = sheet1.row_slice(1) # 獲取第 2 行的數(shù)據(jù)
print(data)
data = sheet.row_types(rowx = 0,start_colx = 0,end_colx = 5) # 獲取第 1 行,第 1-5 列的數(shù)據(jù)
print(data)
data = sheet.row_values(1,0,3) # 獲取第 2 行,第 1-3 列的數(shù)據(jù)
print(data)
num = sheet.row_len(0)# 獲取第 1 行的有效長度
print(num)
執(zhí)行結(jié)果:
5、獲取行數(shù)據(jù)的函數(shù)
對(duì)列進(jìn)行數(shù)據(jù)獲取有以下函數(shù):
5.1、sheet.cols(n):獲取第 n 列的數(shù)據(jù),其中 n 為列數(shù),從 0 開始,返回該列所有單元格數(shù)據(jù)組成的列表。
5.2、sheet.col_slice(n):獲取第 n 列的數(shù)據(jù),其中 n 為列數(shù),從 0 開始,返回該列所有單元格數(shù)據(jù)組成的列表。
5.3、sheet.col_types(colx = n, start_rowx = x, end_rowx = y):獲取第 n 列的數(shù)據(jù)類型,其中 start_rowx 和 end_rowx(若為None則獲取到結(jié)束) 為行的范圍,即指定列數(shù) n,然后指定行的范圍 x 和 y,可以簡寫為:sheet.col_types(n,x,y),返回獲取的數(shù)據(jù)類型組成的列表。
注:總共有 5 種類型:0 empty,1 string,2 number,3 date,4 boolean,5 error
5.4、sheet.col_values(rowx = n, start_rowx = x, end_rowx = y):獲取第 n 列的數(shù)據(jù),其中 start_rowx 和 end_rowx(若為None則獲取到結(jié)束) 為行的范圍,即指定列數(shù) n,然后指定行的范圍 x 和 y,可以簡寫為:sheet.col_values(n,x,y)返回獲取的數(shù)據(jù)組成的列表。
data = sheet1.col(0) # 獲取第 1 行的數(shù)據(jù)
print("第一列的數(shù)據(jù)為:",data)
data = sheet1.col_slice(1) # 獲取第 2 行的數(shù)據(jù)
print("第二列的數(shù)據(jù)為:",data)
data = sheet.col_types(colx = 0,start_rowx = 0,end_rowx = 5) # 獲取第 1 行,第 1-5 列的數(shù)據(jù)
print("第一列,第1-5行的數(shù)據(jù)為:",data)
data = sheet.col_values(1,0,3) # 獲取第 2 行,第 1-3 列的數(shù)據(jù)
print("第二列,第1-3行的數(shù)據(jù)為:",data)
執(zhí)行結(jié)果:
6、獲取單元格數(shù)據(jù)的函數(shù)
對(duì)單元格進(jìn)行數(shù)據(jù)獲取有以下函數(shù):
6.1、sheet.cell(rowx = n, colx = m):獲取第 n 行,第 m 列對(duì)應(yīng)的單元格數(shù)據(jù)(返回的是單元格類型數(shù)據(jù),要想獲取數(shù)據(jù)本身,可以使用sheet.cell(n, m).value)。
6.2、sheet.cell_type(rowx = n, colx = m):獲取第 n 行,第 m 列對(duì)應(yīng)的單元格數(shù)據(jù)類型。
6.3、sheet.cell_value(rowx = n, colx = m):獲取第 n 行,第 m 列對(duì)應(yīng)的單元格數(shù)據(jù)。
data = sheet.cell(rowx = 2, colx = 3) # 獲取第 3 行,第 4 列對(duì)應(yīng)的單元格數(shù)據(jù)
print("第 3 行,第 4 列對(duì)應(yīng)的單元格數(shù)據(jù)為:",data)
print("第 3 行,第 4 列對(duì)應(yīng)的單元格數(shù)據(jù)為:",data.value)
data = sheet.cell_type(2,3) # 獲取第 3 行,第 4 列對(duì)應(yīng)的單元格數(shù)據(jù)類型
print("第 3 行,第 4 列對(duì)應(yīng)的單元格數(shù)據(jù)類型為:",data)
data = sheet.cell_value(2,1) # 獲取第 3 行,第 2 列對(duì)應(yīng)的單元格數(shù)據(jù)
print("第 3 行,第 2 列對(duì)應(yīng)的單元格數(shù)據(jù)為:",data)
執(zhí)行結(jié)果:
7、整體操作
下面的例子為獲取工作表格“編程語言排名.xls”所有數(shù)據(jù):
import xlrd # 導(dǎo)入模塊
table = xlrd.open_workbook("file/編程語言排名.xls") # 打開本地Excel表格:編程語言排名.xls
sheet_names = table.sheet_names() # 獲取工作簿的所有表格名稱
for i in range(len(sheet_names)): # 依次獲取表格數(shù)據(jù)
sheet = table.sheets()[i]
rows = sheet.nrows
for j in range(rows): # 循環(huán)打印表格數(shù)據(jù)
data = sheet.row_values(j,0,None)
print("表格 {} 第 {} 行的數(shù)據(jù)為:{}".format(sheet_names[i],j+1,data))
print("-"*100)
執(zhí)行結(jié)果:
文章來源:http://www.zghlxwxcb.cn/news/detail-430237.html
以上為Python操作Excel表格的模塊xlrd的簡單介紹,這個(gè)比較簡單,當(dāng)然還有其他的操作模塊,如pandas,后續(xù)會(huì)介紹。文章來源地址http://www.zghlxwxcb.cn/news/detail-430237.html
到了這里,關(guān)于Python操作Excel表格的模塊xlrd的簡單介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!