python操作excel常用的庫包:
xlrd(主要做讀取操作)
xlwt(主要做寫入的操作)
xlutils(操作excel的工具)
openpyxl(可完成讀取、寫入、操作)。
本文寫的是通過openpyxl完成對excel的操作,openpyxl是一個Python庫,用於讀取/寫入Excel 2010 xlsx / xlsm / xltx / xltm文件。
官網文檔:https://openpyxl.readthedocs.io/en/stable/
1.通過python創建excel文件並將數據寫入
1 # workbook = Workbook() # 創建工作簿對象 2 3 # sheet = workbook.active # 得到sheet對象 4 5 # # 將數據寫入 append接收一個可迭代對象 6 # sheet.append(['A1', 'B1', 'C1']) 7 8 # # 第二種寫入方式 9 # sheet["B2"] = "這是B2" 10 11 # # 遍歷數據寫入 12 # for i in range(1,5): 13 # sheet[f"D{i}"] = "test" 14 15 # # 保存創建的文件 16 # workbook.save("./source_file/test.xlsx")
2.通過python打開已有的excel文件讀取並寫入數據
1 #得到工作簿對象 2 workbook = openpyxl.load_workbook("./source_file/test.xlsx") 3 # 獲取當前活動的sheet頁對象 4 sheet = workbook.active 5 # 獲取指定的sheet頁對象 6 sheet1 = workbook["Sheet1"] 7 8 # 第一種讀取方式 9 print(sheet["A1"].value) 10 # 第二種讀取方式: _get_cell(row,cloumn) 11 print(sheet._get_cell(1,1).value) 12 13 # 寫入數據 14 sheet["F2"] = "F2" 15 16 # 如果只讀取了數據可以直接關閉 17 workbook.close() 18 19 # 有將數據更改或寫入需要保存文件 20 workbook.save("./source_file/test.xlsx")
3.更多的操作請參考官網文檔,下面提供一個封裝好的版本。
1 class ExcelFile: 2 3 def __init__(self, filepath): 4 self.filepath = filepath 5 self.workbook = openpyxl.load_workbook(filepath) 6 self.sheet = self.workbook.active # 默認創建當前活動的sheet頁對象 7 8 def getSheet(self) -> list: 9 """獲取所有Sheet頁""" 10 return self.workbook.sheetnames 11 12 def setSheet(self, sheetName: str): 13 """設置Sheet頁""" 14 self.sheet = self.workbook[sheetName] 15 16 def getCell(self, column: str, row): 17 """獲取指定的單元格對象""" 18 return self.sheet[column+ str(row)] 19 20 def readCell(self, column: str, row=""): 21 """獲取指定的單元格值""" 22 return self.getCell(column, row).value 23 24 def writeCell(self, column: str, row, value): 25 """給指定單元格寫入值""" 26 self.sheet[column + str(row)] = str(value) 27 28 def clearCell(self, column: str, row): 29 """清空單元格的值""" 30 self.writeCell(column, row, "") 31 32 def getMaxRow(self): 33 """獲取最大行""" 34 return self.sheet.max_row 35 36 def getMaxColumn(self): 37 """獲取最大列""" 38 return self.sheet.max_column 39 40 def saveFile(self): 41 self.workbook.save(self.filepath)