一、安裝xlrd模塊:
1、打開cmd輸入命令:
pip install xlrd
2、驗證安裝是否成功:
- 在cmd輸入 python 進入python環境
- 然后輸入 import xlrd,不報錯即按照成功
二、常用方法:
1、導入模塊和打開Excel:
import xlrd wb = xlrd.open_workbook("income.xlsx")
2、獲取sheet:
- 獲取所有sheet名字:x1.sheet_names()
- 獲取sheet數量:x1.nsheets
- 獲取所有sheet對象:x1.sheets()
- 通過sheet名查找:x1.sheet_by_name("test”)
- 通過索引查找:x1.sheet_by_index(3)
import xlrd wb = xlrd.open_workbook("income.xlsx") print(f"包括的表單數量:{wb.nsheets}") print(f"表單的名分別為:{wb.sheet_names()}") print(f"獲取所有的sheet對象:{wb.sheets()}") print(f"通過sheet名查找:{wb.sheet_by_name('2018')}") print(f"通過sheet名查找:{wb.sheet_by_index(0)}")
輸出:
包括的表單數量:3 表單的名分別為:['2018', '2017', '2016'] 獲取所有的sheet對象:[<xlrd.sheet.Sheet object at 0x000001D8B478D0C8>, <xlrd.sheet.Sheet object at 0x000001D8B47D7E08>, <xlrd.sheet.Sheet object at 0x000001D8B47C6108>] 通過sheet名查找:<xlrd.sheet.Sheet object at 0x000001D8B478D0C8> 通過sheet名查找:<xlrd.sheet.Sheet object at 0x000001D8B478D0C8>
3、獲取sheet數據:
- 獲取sheet名:sheet.name
- 獲取總行數:sheet.nrows
- 獲取總列數:sheet.ncols
import xlrd wb = xlrd.open_workbook("income.xlsx") #獲取指定的sheet對象 sheet = wb.sheet_by_name("2018") print(f"獲取sheet名:{sheet.name}") print(f"獲取總行數:{sheet.nrows}") print(f"獲取總列數:{sheet.ncols}")
輸出
D:\tools\Python37\python.exe E:/teachingexample/samples/excel/test4.py 獲取sheet名:2018 獲取總行數:13 獲取總列數:2
4、單元格批量讀取:
a)行操作:
- sheet1.row_values(0) # 獲取第一行所有內容,合並單元格,首行顯示值,其它為空。
- sheet1.row(0) # 獲取單元格值類型和內容
- sheet1.row_types(0) # 獲取單元格數據類型
import xlrd wb = xlrd.open_workbook("income.xlsx") #獲取指定的sheet對象 sheet = wb.sheet_by_name("2018") #row_values 獲取某行所有內容,結果返回一個列表 print(f"獲取第一行所有內容:{sheet.row_values(0)}") #row(0)獲取指點單元格的類型和值 print(f"獲取單元格值類型和內容:{sheet.row(0)}") print(f"獲取單元格數據類型:{sheet.row_types(0)}")
輸出
獲取第一行所有內容:['月份', '收入'] 獲取單元格內容:[text:'月份', text:'收入'] 獲取總列數:array('B', [1, 1])
b) 表操作
- sheet1.row_values(0, 6, 10) # 取第1行,第6~10列(不含第10行)
- sheet1.col_values(0, 0, 5) # 取第1列,第0~5行(不含第5行)
- sheet1.row_slice(2, 0, 2) # 獲取單元格值類型和內容
- sheet1.row_types(1, 0, 2) # 獲取單元格數據類型
import xlrd wb = xlrd.open_workbook("income.xlsx") #獲取指定的sheet對象 sheet = wb.sheet_by_name("2018") #取第1行,第6~10列(不含第10表) print(sheet.row_values(0, 6, 10)) #取第1列,第0~5行(不含第5行) print(sheet.col_values(0, 0, 5)) #獲取單元格值類型和內容,同sheet1.row(0) print(sheet.row_slice(2, 0, 2)) #獲取單元格數據類型 print(sheet.row_types(1, 0, 2))
5、特定單元格讀取:
a) 獲取單元格值:
- sheet1.cell_value(1, 2)
- sheet1.cell(1, 2).value
- sheet1.row(1)[2].value
b) 獲取單元格類型:
- sheet1.cell(1, 2).ctype
- sheet1.cell_type(1, 2)
- sheet1.row(1)[2].ctype
import xlrd wb = xlrd.open_workbook("income.xlsx") #獲取指定的sheet對象 sheet = wb.sheet_by_name("2018") # 特定單元格讀取 # 取值 print(sheet.cell_value(0, 1)) print(sheet.cell(0, 1).value) print(sheet.row(0)[1].value) #取類型 print(sheet.cell(0, 1).ctype) print(sheet.cell_type(0, 1)) print(sheet.row(0)[1].ctype)
6、(0,0)轉換A1:
- xlrd.cellname(0, 0) # (0,0)轉換成A1
- xlrd.cellnameabs(0, 0) # (0,0)轉換成$A$1
- xlrd.colname(30) # 把列由數字轉換為字母表示
import xlrd wb = xlrd.open_workbook("income.xlsx") #獲取指定的sheet對象 sheet = wb.sheet_by_name("2018") # (0,0)轉換成A1 print(xlrd.cellname(0, 0)) # (0,0)轉換成$A$1 print(xlrd.cellnameabs(0, 0)) #把列由數字轉換為字母表示 print(xlrd.colname(30))
輸出:
D:\tools\Python37\python.exe E:/teachingexample/samples/excel/test4.py A1 $A$1 AE