Excel 自動化:用 Python 五分鐘搞掂月結報表

做月結係唔少中小企老闆同文員最頭痕嘅一件事。每個月尾,你要由成堆訂單、發票、銷售記錄度人手計總數、分類、再砌份報表出嚟 —— 幾百行數據逐行 copy & paste,錯一個位成個月都白做。今篇教你用 Python 加兩個免費庫,將成個過程縮到五分鐘,仲係零人手、零出錯。

點解用 Python 處理 Excel?

你日日對住嘅 Excel 檔案,其實可以完全交俾程式處理。Python 加埋 pandas(數據處理神器)同 openpyxl(直接讀寫 Excel 檔案),可以做到:

  • 自動讀入 —— 一次過讀晒成個 .xlsx 檔案,唔使逐格睇
  • 自動運算 —— 加總、平均、分組統計,一行 code 搞掂
  • 自動輸出 —— 直接寫返個乾淨嘅總結報表

第一步:安裝兩個庫

假設你已經裝咗 Python(未裝嘅話睇返上篇入門教學)。開命令提示字元,打:

pip install pandas openpyxl

裝完就得,冇其他嘢要設定。

第二步:我哋要處理啲咩?

假設你有一個 sales.xlsx,入面係今個月嘅銷售記錄,有幾欄:日期、產品、客戶、金額。你想知:

  • 今個月總營業額幾多?
  • 每個產品分別賣咗幾多錢?
  • 最賺錢嘅客戶係邊個?

第三步:寫程式

開新檔案 monthly_report.py,貼入以下 code:

import pandas as pd # 讀入銷售記錄 df = pd.read_excel("sales.xlsx") # 今個月總營業額 total = df["金額"].sum() print(f"總營業額:${total:,.0f}") # 每個產品嘅銷售額 by_product = df.groupby("產品")["金額"].sum().sort_values(ascending=False) print(by_product) # 最賺錢嘅客戶 top_client = df.groupby("客戶")["金額"].sum().idxmax() print(f"最大客戶:{top_client}") # 將結果寫入新 Excel with pd.ExcelWriter("monthly_summary.xlsx") as w: by_product.to_frame("銷售額").to_excel(w, sheet_name="產品統計") df.groupby("客戶")["金額"].sum().to_frame("銷售額").to_excel(w, sheet_name="客戶統計")

逐行解釋

  • pd.read_excel("sales.xlsx") —— 成個檔案讀入做一個 DataFrame(好似張會郁嘅試算表)。
  • df["金額"].sum() —— 將「金額」嗰欄所有數字加埋一齊。
  • groupby("產品") —— 按「產品」分組,再對每組做 sum(),即係每個產品各自加總。
  • sort_values(ascending=False) —— 由大至細排,一眼睇到邊樣最賣得。
  • idxmax() —— 搵出加總後最大嗰個客戶名。
  • ExcelWriter —— 將結果一次過寫入新檔案,仲可以分開唔同工作表。

第四步:執行

sales.xlsx 同個程式擺埋同一資料夾,然後打:

python monthly_report.py

幾秒鐘之後,資料夾會多咗個 monthly_summary.xlsx,入面已經有齊產品統計同客戶統計兩張表。下個月換個新檔案,再行一次就得。

進階:每月自動執行

想再懶啲?將個程式設定喺每月一號自動行,Windows 用「工作排程器」加個每月觸發就得。到時你連撳掣都唔使,月結報表自動喺你返工前生成好。

總結

由人手幾個鐘到程式五分鐘,關鍵唔係你識唔識寫 code,而係肯唔肯行第一步。用呢套思路,你可以再延伸:自動合併十幾個門市嘅 Excel、自動畫圖、自動電郵俾老闆。數碼轉型唔一定要一步到位,由一張報表開始就夠。