Python 辦公室自動化:用 openpyxl 操控 Excel (第 42 章)

站主自己的課程,請大家支持
揭秘站長的架站心法:如何利用 Hugo × AI 打造高質感個人品牌網站? 揭秘站長的架站心法:如何利用 Hugo × AI 打造高質感個人品牌網站?
  • Post by
  • Jan 25, 2024
post-thumb

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 自動化


延伸閱讀

LATEST POST
TAG