openpyxl模塊是一個讀寫Excel 2010文檔的Python庫,如果要處理更早格式的Excel文檔,需要用到額外的庫,openpyxl是一個比較綜合的工具,能夠同時讀取和修改Excel文檔。本文參考@keith666的python操作excel之openpyxl
安裝openpyxl
使用下面的命令安裝openpyxl:
pip install openpyxl
認(rèn)識excel表格
想要操作Excel首先要了解Excel 基本概念,Excel中列以字母命名,行以數(shù)字命名,比如左上角第一個單元格的坐標(biāo)為A1,下面的為A2,右邊的B1,以此類推。
openpyxl中有三個不同層次的類,Workbook是對一個Excel文件的抽象,Worksheet是對Excel中一個sheet的抽象,Cell是對單元格的抽象,每一個類都包含了許多屬性和方法。
workbook
一個Workbook對象代表一個Excel文檔,因此在操作Excel之前,都應(yīng)該先創(chuàng)建一個Workbook對象??梢詣?chuàng)建一個新的Excel文檔,直接進行Workbook類的調(diào)用即可,對于一個已經(jīng)存在的Excel文檔,也可以使用openpyxl模塊的load_workbook函數(shù)進行讀取,該函數(shù)包涵多個參數(shù),但只有filename參數(shù)為必傳參數(shù)。filename 是一個文件名,也可以是一個打開的文件對象。
1、讀取workbook
# 導(dǎo)入模塊
from openpyxl import load_workbook
# 導(dǎo)入一個Workbook
wb = load_workbook(filename = './empty_book.xlsx')
2、新建workbook
# 導(dǎo)入模塊
from openpyxl import Workbook
# 創(chuàng)建一個Workbook
wb = Workbook() // 默認(rèn)生成一個名為'Sheet'的WorkSheet
3、workbook中重要屬性和方法
屬性:
active:獲取當(dāng)前活躍的Worksheet
worksheets:以列表的形式返回所有的Worksheet(表格)
read_only:判斷是否以read_only模式打開Excel文檔
encoding:獲取文檔的字符集編碼
properties:獲取文檔的元數(shù)據(jù),如標(biāo)題,創(chuàng)建者,創(chuàng)建日期等
sheetnames:獲取工作簿中的表(列表)
方法:
get_sheet_names:獲取所有表格的名稱(新版已經(jīng)不建議使用,通過Workbook的sheetnames屬性即可獲取)
get_sheet_by_name:通過表格名稱獲取Worksheet對象(新版也不建議使用,通過Worksheet[‘表名‘]獲取)
get_active_sheet:獲取活躍的表格(新版建議通過active屬性獲取)
remove_sheet:刪除一個sheet
create_sheet:創(chuàng)建一個空的sheet
copy_worksheet:在Workbook內(nèi)拷貝表格
4、保存wookbook
# 導(dǎo)入模塊
from openpyxl import Workbook
# 創(chuàng)建一個Workbook
wb = Workbook() // 默認(rèn)生成一個名為'Sheet'的WorkSheet
wb.save('example.xsxl')
worksheet
1、獲取worksheet
from openpyxl import Workbook
wb = Workbook() #默認(rèn)生成只有一個excel表格,該表格中只有一個默認(rèn)名'sheet'的sheet
#獲取默認(rèn)打開的(active)的WorkSheet
ws1 = wb.active
# 創(chuàng)建一個WorkSheet
ws2 = wb.create_sheet() # 可傳title和index兩個參數(shù),如果不傳參數(shù)title則生成的WorkSheet名為在'Sheet'后面遞增加數(shù)字
# 通過名稱獲取WorkSheet
ws3=wb['Sheet1']
2、worksheet中重要屬性和方法
屬性:
title:表格的標(biāo)題
dimensions:表格的大小,這里的大小是指含有數(shù)據(jù)的表格的大小,即:左上角的坐標(biāo):右下角的坐標(biāo)
max_row:表格的最大行
min_row:表格的最小行
max_column:表格的最大列
min_column:表格的最小列
rows:按行獲取單元格(Cell對象) - 生成器
columns:按列獲取單元格(Cell對象) - 生成器
freeze_panes:凍結(jié)窗格
values:按行獲取表格的內(nèi)容(數(shù)據(jù)) - 生成器
方法:
iter_rows:按行獲取所有單元格,內(nèi)置屬性有(min_row,max_row,min_col,max_col)
iter_columns:按列獲取所有的單元格
append:在表格末尾添加數(shù)據(jù)
merge_cells:合并多個單元格
unmerged_cells:移除合并的單元格
合并單元格方法舉例如下:
from openpyxl import Workbook
wb = Workbook() #默認(rèn)生成只有一個excel表格,該表格中只有一個默認(rèn)名'sheet'的sheet
#獲取默認(rèn)打開的(active)的WorkSheet
ws1 = wb.active
ws1.merge_cells('A1:A5')
cell
cell中常用的屬性
row:單元格所在的行
column:單元格坐在的列
value:單元格的值
coordinate:單元格的坐標(biāo)