openpyxl 介紹
openpyxl是一個用于讀/寫 XLSX/XLSM/XLTX/XLTM文件的python庫。openpyxl(可讀寫excel表)專門處理Excel2007及以上版本產生的xlsx文件;2007一下的版本為xls后綴的文件,需要使用 xlrd和xlwt庫進行操作。雖然xlrd和xlwt也可以進行文件讀寫,但是感覺不能對一個文件同時進行讀寫操作,我用的時候感覺不是很方便,用openpyxl庫可以對一個文件同時進行讀寫操作(這里的同時指的是在一個py文件只打開關閉一次文件,但可以進行讀和寫操作,不涉及多線程)
openpyxl 基本操作
新建文件、加載已有文件
import openpyxl
# 如果openpyxl不存在,在cmd中執行 pip insatll openpyxl下載庫
# 新建一個空excel,文件名為test,表名為sheet(默認創建),
wb = openpyxl.Workbook() # 創建新的excel文件,一個工作簿(workbook)在創建的時候同時至少也新建了一張工作表(worksheet)
wb.save('test.xlsx')
# 載入已存在的xslx文件
wb = openpyxl.load_workbook("test.xlsx")
表操作
wb.create_sheet("my_sheet1") # 給文件添加指定名稱的工作表
wb.create_sheet(index=1, title="my_sheet2") # 可通過index控制創建的表的位置, index從0開始
sheet_names = wb.sheetnames# 得到工作簿的所有工作表名 結果: ['Sheet','my_sheet2','my_sheet1']
# 根據表名獲取工作表
sheet = wb["my_sheet1"]
# 根據表名刪除sheet表
wb.remove(wb["my_sheet1"])
讀數據
max_row = sheet.max_row # 最大行數
max_col = sheet.max_column # 最大列數
value = sheet.cell(row=1, column=1).value # 獲取第1行第1列位置的數據,坐標最小從1開始[xlrd和xlwt是從0開始,要注意一下]
value = sheet["A1"].value # 獲取A列第一個數據
list_row = sheet[1] # 獲取第一行數據,行數最小從1開始,數據單元類型為openpyxl.cell.cell.Cell,讀取值需要list_row[0].value
list_col = sheet['A'] # 獲取A列的數據
寫數據
sheet.cell(row=1,column=1,value=1) # 在sheet工作表(1,1)位置寫1
sheet["B1"] = "B1" # 直接修改B1列第1個單元格的值為B1
sheet["B2"] = "B2" # 新增B2單元格的值為B2
wb.save("test.xlsx") # 最后要保存才有效果
調整表格樣式
# ------------------ 表格樣式調整 ------------------
# 表格樣式支持:字體、顏色、模式、邊框、數字格式等
# A1單元格 等線24號加粗斜體,字體顏色淺藍色
sheet["A1"].font = openpyxl.styles.Font(name="宋體", size=24, italic=True, color="00CCFF", bold=True)
# B1單元格 水平上下居中
sheet["B1"].alignment = openpyxl.styles.Alignment(horizontal="center", vertical="center")
# 第一行高度設置為30
sheet.row_dimensions[1].height = 30
# C列的寬度設置為35
sheet.column_dimensions["C"].width = 35
wb.save("test.xlsx")
如有不當之處,歡迎指出,謝謝!