安裝方法
使用 pip 或通過專門python IDE(如pyCharm)進行安裝
其中pip安裝方法,命令行輸入: pip install openpyxl
基本使用
第一步先是要導入 openpyxl 模塊
importopenpyxl
讀取Excel文檔
通過調用方法load_workbook(filename)進行文件讀取,該方法中還有一個read_only參數用於設置文件打開方式,默認為可讀可寫,該方法最終將返回一個workbook的數據對象
# 文件必須是xlsx格式,如果是其他格式在執行前可利用win32輔助轉化wb = openpyxl.load_workbook(‘example.xlsx’)
(一)獲取工作表
每一個Excel表格中都會有很多張sheet工作表,在對表格操作前需要先選定一張工作表

(二)獲取單元格
對Excel表格的操作最終都落於對單元格的操作,獲取單元格有兩種獲取方法:sheet[列行名]和sheet.cell(row,column)

需要注意的是,sheet.cell(row,column)中參數分別是行和列,且必須為整數,如果列為英文字母,可以利用 openpyxl.utils 中的 column_index_from_string(char)進行字母數字的轉化。順便一說,同理也可以利用get_column_letter(number)進行數字字母間的轉化

(三)獲取行和列
在處理Excel表格有時可能需要對表格進行遍歷查找,openpyxl中便提供了一個行和列的生成器(sheet.rows和sheet.columns),這兩個生成器里面是每一行(或列)的數據,每一行(或列)又由一個tuple包裹,借此可以很方便地完成對行和列的遍歷

學習時還發現也可以通過list(sheet.rows)[index](或list(sheet.columns)[index])對某一行或列進行遍歷,而在此值得注意的是,由於sheet.rows(或sheet.columns)是生成器類型,是不能直接調用的,需將其轉化為一個list類型,然后再通過索引遍歷

同時,也可以通過使用sheet[行列值:行列值]來對給定單元格范圍進行遍歷

另外,有時候我們還可能需要確定表格的大小,即獲取表格行和列的最大值,可以用max_row和max_column來獲取
# 獲得最大列和最大行
print(sheet.max_row)
print(sheet.max_column)
寫入Excel文檔
在開頭讀取時已經介紹,默認的打開方式為可讀可寫,那么使用load_workbook(filename)讀取Excel文檔后也就可以直接寫入了。另外,如果需要新建一個Excel文件,可以使用Workbook()方法,同時它會自動提供一個sheet工作表。對於刪除一個工作表,則可以使用workbook對象的remove(sheet)方法刪除
# 新建一個Excel文檔
wb = openpyxl.Workbook()
# 刪除某個工作表
wb.remove(sheet)
(一)寫入單元格
獲取工作表和之前一樣,如果使用load_workbook(filename)讀取,那么獲取工作表后可以直接通過sheet[行列值]寫入單元格。學習時,有資料介紹還可以傳入Excel中的公式進行賦值,不過要注意,在讀取文件時需要加上參數data_only=True,這樣才能返回數字,否則將返回字符串,即公式本身
# 直接賦值
sheet['A1'].value = 2
# 公式賦值
sheet['A6'].value = '=SUM(A1:A5)'
另外,也可使用sheet.append(parameters)一行或多行寫入

(二)保存文件
寫完文件后,使用workbook.save(path+filename)進行保存,不過要注意文件擴展名一定要是xlsx格式
# 保存文件至當前目錄wb.save('new_file.xlsx')
設置單元格樣式
單元格樣式主要包括字體、邊框、顏色以及對齊方式等,這些均位於openpyxl.styles庫中
# 導入字體、邊框、顏色以及對齊方式相關庫fromopenpyxl.stylesimportFont, Border, Side, PatternFill, colors, Alignment
(一)字體
通過sheet單元格font屬性設置字體風格
# 設置字體風格為Times New Roman,大小為16,粗體、斜體,顏色藍色sheet['A1'].font = Font(name='Times New Roman', size=16, bold=True, italic=True, color=colors.BLUE)
(二)對齊方式
通過sheet單元格alignment屬性設置文本對齊風格
# 通過參數horizontal和vertical來設置文字在單元格里的對齊方式,此外設置值還可為left和rightsheet['B1'].alignment = Alignment(horizontal='center',vertical='center')
(三)邊框
通過sheet單元格border屬性設置字體風格
# 首先設置邊框四個方向的線條種類left, right, top, bottom = [Side(style='thin', color='000000')] * 4# 再將各方向線條作為參數傳入Border方法sheet['C1'].border = Border(left=left, right=right, top=top, bottom=bottom)
(四)設置行高和列寬
行和列的長度大小可以通過row_dimensions[序號].height和column_dimensions[標號].width來設置
# 設置行高sheet.row_dimensions[1].height = 25# 設置列寬sheet.column_dimensions['D'].width = 15.5
(五)合並和拆分單元格
對單元格的合並與拆分,主要是通過sheet的merge_cells(args1:args2)和unmerge_cells(args1:args2)兩個方法來實現的
# 合並單元格sheet.merge_cells('A1:B2')# 拆分單元格sheet.unmerge_cells('A1:B2')
當然,除了對角矩形區域化合並,也可以對一行或一列進行合並,只需相應修改參數即可。不過,這里要注意的是,合並后單元格顯示的文本內容是合並前最左上角單元格的內容,而其他單元格內容則會自動清除。