Python 自動(dòng)化辦公:操作 Excel 的七個(gè)示例
在日常工作中,Excel作為數(shù)據(jù)分析和報(bào)告制作的利器,幾乎無(wú)人不知無(wú)人不曉。然而,面對(duì)大量重復(fù)的數(shù)據(jù)錄入、整理、分析任務(wù)時(shí),手動(dòng)操作不僅耗時(shí)費(fèi)力,還容易出錯(cuò)。此時(shí),Python與它的強(qiáng)大庫(kù)openpyxl便閃亮登場(chǎng),助你輕松實(shí)現(xiàn)Excel自動(dòng)化辦公。
Python以其簡(jiǎn)潔易學(xué)的語(yǔ)法和豐富的數(shù)據(jù)處理庫(kù),能高效地處理復(fù)雜的數(shù)據(jù)任務(wù),而openpyxl則是專門用于操作Excel文件的庫(kù),讓你無(wú)需打開Excel,就能完成創(chuàng)建、讀取、編輯等操作。
openpyxl庫(kù)簡(jiǎn)介與安裝
openpyxl是一個(gè)開源的Python庫(kù),專注于讀寫Microsoft Excel 2010 xlsx/xlsm/xltx/xltm文件。它支持高級(jí)功能如數(shù)據(jù)驗(yàn)證、圖表、超鏈接、注釋等,且性能優(yōu)秀,對(duì)大型文件處理游刃有余。安裝只需在命令行中輸入以下命令:
pip install openpyxl
示例一:創(chuàng)建新Excel文件并寫入數(shù)據(jù)
想在Python里“無(wú)中生有”一個(gè)Excel文件?openpyxl幫你實(shí)現(xiàn)!下面的代碼將創(chuàng)建一個(gè)名為“my_data.xlsx”的文件,并在其中填入一些數(shù)據(jù):
from openpyxl import Workbook
# 創(chuàng)建Workbook對(duì)象,相當(dāng)于一個(gè)新的Excel文件
wb = Workbook()
# 獲取默認(rèn)的活躍工作表(Sheet)
ws = wb.active
# 在A1到C3單元格寫入數(shù)據(jù)
for row in range(1, 4):
for col in 'ABC':
ws[col+str(row)] = f"Data {row} {col}"
# 保存到硬盤
wb.save("my_data.xlsx")
示例二:讀取現(xiàn)有Excel文件數(shù)據(jù)
有了數(shù)據(jù),自然要能讀取。這段代碼將打開“my_data.xlsx”,讀取其內(nèi)容并打印出來(lái):
from openpyxl import load_workbook
# 加載已有的Excel文件
wb = load_workbook("my_data.xlsx")
# 獲取第一個(gè)工作表(索引為0)
ws = wb.worksheets[0]
# 遍歷所有單元格并打印內(nèi)容
for row in ws.iter_rows():
for cell in row:
print(cell.value)
示例三:修改單元格內(nèi)容及樣式
數(shù)據(jù)錯(cuò)了?顏色不滿意?openpyxl讓你輕松調(diào)整:
from openpyxl.styles import Font, Color
# 加載已有的Excel文件
wb = load_workbook("my_data.xlsx")
ws = wb.active
# 修改A1單元格內(nèi)容為"Updated Data"
ws["A1"] = "Updated Data"
# 設(shè)置A1單元格字體為紅色,加粗
font = Font(color=Color(rgb='FF0000'), bold=True)
ws["A1"].font = font
# 保存更改
wb.save("my_data.xlsx")
示例四:添加/刪除行與列
數(shù)據(jù)結(jié)構(gòu)需要調(diào)整?openpyxl讓你增刪自如:
# 加載已有的Excel文件
wb = load_workbook("my_data.xlsx")
ws = wb.active
# 在第二行前插入一行
ws.insert_rows(2)
# 刪除第三列(C列)
ws.delete_cols(3)
# 保存更改
wb.save("my_data.xlsx")
示例五:合并單元格與設(shè)置條件格式
表格需要更美觀?合并單元格與條件格式來(lái)幫忙:
from openpyxl.formatting.rule import CellIsRule
from openpyxl.styles import PatternFill
# 加載已有的Excel文件
wb = load_workbook("my_data.xlsx")
ws = wb.active
# 合并A1到C1單元格
ws.merge_cells('A1:C1')
# 創(chuàng)建一個(gè)條件格式規(guī)則:當(dāng)單元格值大于10時(shí)填充綠色
green_fill = PatternFill(start_color="00FF00", end_color="00FF00", fill_type="solid")
rule = CellIsRule(operator='>', formula=['10'], stopIfTrue=False, fill=green_fill)
# 應(yīng)用規(guī)則到整個(gè)工作表
ws.conditional_formatting.add('A1:C5', rule)
# 保存更改
wb.save("my_data.xlsx")
示例六:利用公式計(jì)算與數(shù)據(jù)統(tǒng)計(jì)
數(shù)據(jù)需要計(jì)算或統(tǒng)計(jì)?openpyxl支持直接寫入公式:
# 加載已有的Excel文件
wb = load_workbook("my_data.xlsx")
ws = wb.active
# 在D1單元格寫入求和公式
ws["D1"] = "=SUM(A1:C1)"
# 在D2單元格寫入平均值公式
ws["D2"] = "=AVERAGE(A2:C2)"
# 保存更改并計(jì)算公式結(jié)果
wb.save("my_data.xlsx")
示例七:批量處理多個(gè)工作表
面對(duì)多工作表的大型文件,openpyxl也能輕松應(yīng)對(duì):
# 加載已有的Excel文件
wb = load_workbook("my_data.xlsx")
# 遍歷所有工作表
for sheet in wb.worksheets:
print(f"Processing sheet: {sheet.title}")
# 對(duì)每個(gè)工作表執(zhí)行相同的操作,如數(shù)據(jù)清洗、格式化等
# 保存更改
wb.save("my_data.xlsx")
結(jié)語(yǔ):進(jìn)階學(xué)習(xí)與應(yīng)用場(chǎng)景推薦
恭喜你,通過以上7個(gè)示例,你已經(jīng)掌握了openpyxl的基本操作。接下來(lái),你可以嘗試結(jié)合pandas庫(kù)進(jìn)行更復(fù)雜的數(shù)據(jù)分析,或者利用定時(shí)任務(wù)實(shí)現(xiàn)自動(dòng)化報(bào)表生成。無(wú)論你是處理銷售數(shù)據(jù)、財(cái)務(wù)報(bào)表,還是科研數(shù)據(jù),openpyxl都能成為你提升工作效率的得力助手。