openpyxl模組操作Excel
阿新 • • 發佈:2020-12-21
1.openpyxl模組瞭解
1.excel版本問題 03版本之前的excel檔案字尾名xls 03版本之後的excel檔案字尾名xlsx 2.python操作excel表格的模組 openpyxl 針對03版本之前的excel不是太相容 xlrd(讀)、xlwt(寫) 相容03版本之前和之後的 https://www.cnblogs.com/yangmeichong/p/10873920.html openpyxl其實也是pandas模組操作excel的底層模組 # 下載 pip3 install openpyxl 參考網站:https://openpyxl.readthedocs.io/en/stable/
2.Excel檔案生成
from openpyxl import Workbook # 生成一個excel檔案物件 wb = Workbook() # 建立工作簿,預設是在sheet後面 # w1 = wb.create_sheet('test') # wb1 = wb.create_sheet('test',0) # 還可以指定索引引數調整test位置 # 調整工作簿的位置 w1 = wb.create_sheet('工作簿01',index=0) w2 = wb.create_sheet('工作簿02') w3 = wb.create_sheet('工作簿03') # 二次修改工作簿名稱 w1.title = 'MySheet01' # 儲存檔案 wb.save(r'aaa.xlsx')
3.openpyxl寫資料
w1 = wb.create_sheet('工作簿01',index=0) # 寫資料方式1 # w1['A1'] = 666 # 寫資料方式2:在第2行第1列寫資料999 # w1.cell(row=2,column=1,value=999) # 插入公式,注意等號一定要加,還可以寫函式(比如excel支援的求和,求差等很多常見的函式) # w1['A5'] = '=sum(A1:A2)' # 建立表字段資料 w1.append(['序號','姓名','年齡','愛好']) # 新增表單資料 w1.append([1,'jason',18,'read']) w1.append([2,'tony',28,'music']) w1.append([3,'tom',38,'play']) # 資料多了 w1.append([4,'jerry',38,'play','江蘇']) # 沒有列欄位對應 # 資料少了 w1.append([5,48,'run']) """ 針對缺失的資料 用None或者''佔位 """ w1.append([6,None,48,'run']) w1.append([7,'',66,'read']) # 儲存檔案 wb.save(r'bbb.xlsx')
4.openpyxl讀取資料
from openpyxl import load_workbook wb = load_workbook(r'bbb.xlsx',data_only=True)
# read_only=True 當讀取一個較大的檔案時,如果不適用這個引數會導致產生“MemoryError”錯誤,檔案都載入到記憶體,導致記憶體空間不足報錯
# wb = load_workbook('1.xlsx',read_only=True,data_only=True) # 獲取所有工作簿的名稱 # print(wb.sheetnames) # ['工作簿01', 'Sheet'] # 指定你需要操作的工作簿 w1 = wb['工作簿01'] # 讀取資料方式1 # print(w1['A1'].value) # 讀取資料方式2 # print(w1.cell(row=2,column=1).value) # 讀取公式單元格資料 預設只能獲取到公式 # print(w1['A5'].value) # =sum(A1:A2) """如果需要獲取公式計算之後的結果 1.wb = load_workbook(r'aaa.xlsx',data_only=True) 2.針對程式碼生成的excel檔案需要你去操作一下 """ # 讀行資料 # for row in w1.rows: # row_data = [r.value for r in row] # print(row_data) # 讀列資料 # for col in w1.columns: # col_data = [c.value for c in col] # print(col_data) print(w1.max_row) # 檢視總共有多少行資料 print(w1.max_column) # 檢視總共有多少列欄位