這是一個第三方庫,可以處理xlsx格式的Excel文件。pip install openpyxl安裝。如果使用Aanconda,應(yīng)該自帶了。
讀取Excel文件
需要導(dǎo)入相關(guān)函數(shù)。
from openpyxl import load_workbook# 默認(rèn)可讀寫,若有需要可以指定write_only和read_only為Truewb = load_workbook('mainbuilding33.xlsx')默認(rèn)打開的文件為可讀寫,若有需要可以指定參數(shù)read_only為True。
獲取工作表--Sheet
# 獲得所有sheet的名稱print(wb.get_sheet_names())# 根據(jù)sheet名字獲得sheeta_sheet = wb.get_sheet_by_name('Sheet1')# 獲得sheet名print(a_sheet.title)# 獲得當(dāng)前正在顯示的sheet, 也可以用wb.get_active_sheet()sheet = wb.active 獲取單元格
# 獲取某個單元格的值,觀察excel發(fā)現(xiàn)也是先字母再數(shù)字的順序,即先列再行b4 = sheet['B4']# 分別返回print(f'({b4.column}, {b4.row}) is {b4.value}') # 返回的數(shù)字就是int型# 除了用下標(biāo)的方式獲得,還可以用cell函數(shù), 換成數(shù)字,這個表示B2b4_too = sheet.cell(row=4, column=2)print(b4_too.value)b4.column返回B, b4.row返回4, value則是那個單元格的值。另外cell還有一個屬性coordinate, 像b4這個單元格返回的是坐標(biāo)B4。
獲得最大行和最大列
# 獲得最大列和最大行print(sheet.max_row)print(sheet.max_column)
獲取行和列
# 因為按行,所以返回A1, B1, C1這樣的順序for row in sheet.rows: for cell in row: print(cell.value)# A1, A2, A3這樣的順序for column in sheet.columns: for cell in column: print(cell.value)
上面的代碼就可以獲得所有單元格的數(shù)據(jù)。如果要獲得某行的數(shù)據(jù)呢?給其一個索引就行了,因為sheet.rows是生成器類型,不能使用索引,轉(zhuǎn)換成list之后再使用索引,list(sheet.rows)[2]這樣就獲取到第二行的tuple對象。
for cell in list(sheet.rows)[2]: print(cell.value)
如何獲得任意區(qū)間的單元格?
可以使用range函數(shù),下面的寫法,獲得了以A1為左上角,B3為右下角矩形區(qū)域的所有單元格。注意range從1開始的,因為在openpyxl中為了和Excel中的表達(dá)方式一致,并不和編程語言的習(xí)慣以0表示第一個值。
for i in range(1, 4): for j in range(1, 3): print(sheet.cell(row=i, column=j)) # out<Cell mainbuilding33.A1><Cell mainbuilding33.B1><Cell mainbuilding33.A2><Cell mainbuilding33.B2><Cell mainbuilding33.A3><Cell mainbuilding33.B3>
新聞熱點
疑難解答