使用openpyxl對Excel進行編輯

openpyxl模塊是一個讀寫Excel 2010文檔的Python庫,如果要處理更早格式的Excel文檔,需要用到額外的庫,openpyxl是一個比較綜合的工具,能夠同時讀取和修改Excel文檔。本文參考@keith666python操作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)

使用案例:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容