
Excel 是全球最通用的商業語言。如果你能用 Python 自動操控 Excel,你就是辦公室裡的超人。
雖然 Pandas read_excel 很好用,但它主要處理「數據」。如果你需要修改儲存格格式、顏色、公式、圖表,你需要的是 openpyxl。
1. 安裝
pip install openpyxl
2. 讀取 Excel
from openpyxl import load_workbook
# 載入現有檔案
wb = load_workbook("report.xlsx")
# 選擇工作表
ws = wb.active # 或是 wb["Sheet1"]
# 讀取儲存格
print(ws["A1"].value)
print(ws.cell(row=2, column=3).value) # 第 2 列 第 3 欄 (C2)
# 遍歷所有列
for row in ws.iter_rows(min_row=2, max_col=3, values_only=True):
print(row) # ('Alice', 'Sales', 5000)
3. 寫入與修改
from openpyxl import Workbook
# 建立新活頁簿
wb = Workbook()
ws = wb.active
ws.title = "2024 銷售報表"
# 寫入標題
ws.append(["姓名", "部門", "業績"])
# 寫入資料
data = [
["Alice", "Sales", 5000],
["Bob", "IT", 3000],
["Charlie", "HR", 2000]
]
for row in data:
ws.append(row)
# 寫入公式
ws["C5"] = "=SUM(C2:C4)"
wb.save("new_report.xlsx")
4. 調整樣式 (Styles)
讓你的報表變漂亮!
from openpyxl.styles import Font, PatternFill, Alignment
# 變更 A1 字體:粗體、紅色、20pt
ws["A1"].font = Font(bold=True, color="FF0000", size=20)
# 填滿背景色:黃色
ws["A1"].fill = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid")
# 置中對齊
ws["A1"].alignment = Alignment(horizontal="center", vertical="center")
5. Pandas vs OpenPyXL
- Pandas: 適合做大量數據分析、清洗。讀取快,但無法保留格式。
- OpenPyXL: 適合做精細的格式調整、產生最終報表。
最佳實踐:先用 Pandas 處理好數據,最後用 OpenPyXL 美化輸出。
# Pandas 匯出時指定引擎
df.to_excel("data.xlsx", index=False, engine='openpyxl')
6. 總結
學會 OpenPyXL,你就可以寫一個腳本,每天早上自動抓取數據 -> 整理 -> 填入 Excel -> 寄給老闆。
說到寄信,下一章我們就來講——Email 與 PDF 自動化!
延伸閱讀: