做月結係唔少中小企老闆同文員最頭痕嘅一件事。每個月尾,你要由成堆訂單、發票、銷售記錄度人手計總數、分類、再砌份報表出嚟 —— 幾百行數據逐行 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、自動畫圖、自動電郵俾老闆。數碼轉型唔一定要一步到位,由一張報表開始就夠。