用 Agent 做 Excel 报表自动化:从每月加班到一键生成
每月月底,我都要花 3-4 小时做一份销售报表:从系统导出数据 → 打开 Excel → 清洗 → 透视表 → 图表 → 排版 → 发邮件。这份重复劳动,其实完全可以让 Agent 接管。
这期分享我怎么用 Agent 把「月度报表」从手工 3 小时变成一键 10 秒,中间踩了不少坑。
一、先拆:报表生产有哪些环节
导出数据 → 数据清洗 → 聚合计算 → 图表生成 → 排版输出 → 邮件发送
逐个分析哪些能自动化:
| 环节 | 能不能自动化 | 谁来干 |
|---|---|---|
| 导出数据 | ✅ | Agent(调接口/读库) |
| 数据清洗 | ✅ | Agent(去空/去重/格式统一) |
| 聚合计算 | ✅ | Agent(透视/分组/汇总) |
| 图表生成 | ✅ | Agent(matplotlib/openpyxl) |
| 排版输出 | ✅ | Agent(模板渲染) |
| 邮件发送 | ⚠️ 敏感 | 人确认后手动发(涉及外部发送) |
二、数据清洗:Agent 最擅长的脏活
原始数据永远有一堆坑:空行、重复、格式不统一。用 pandas 几行搞定:
python
import pandas as pd
df = pd.read_excel("sales_raw.xlsx")
# 清洗
df = df.dropna(subset=["order_id"]) # 去空订单
df = df.drop_duplicates(subset=["order_id"]) # 去重
df["amount"] = pd.to_numeric(df["amount"], errors="coerce") # 统一数字
# 输出
df.to_excel("sales_clean.xlsx", index=False)
关键 :清洗规则要写死(可解释、可复现),不要每次让 Agent 临场发挥。
三、聚合计算:透视表逻辑
报表的核心是聚合,规则由人定:
python
pivot = df.pivot_table(
index="region", # 按地区
columns="month", # 按月
values="amount",
aggfunc="sum",
)
把指标定义清楚(GMV、单量、客单价、环比),Agent 按公式算,不主观发挥。
四、图表 + 排版:模板化
图表不要每次重新设计,固定模板 + 填数据:
python
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(10, 4))
pivot.plot(kind="bar", ax=ax)
ax.set_title("各区域月度销售")
fig.savefig("chart.png", dpi=150, bbox_inches="tight")
模板的好处:
- 风格统一,领导看着顺眼
- 换数据就行,不用每次调样式
五、生成最终 Excel(openpyxl)
python
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill
wb = Workbook()
ws = wb.active
ws.append(["区域", "GMV", "同比"])
ws.append(["华东", 123456, "+12.3%"])
# 样式:表头加粗、背景色
注意 :样式(表头、配色、列宽)做一次,以后复用,Agent 每次都套模板。
六、踩坑记录
- 公式 vs 值:Agent 直接写死计算值,不写公式。读取方看不到公式,只看到结果,更稳。
- 编码:Excel 中文乱码 → 统一 UTF-8。
- 数据源权限 :报表数据从系统导出,要用接口/脚本,别用爬虫硬爬页面。
- 脱敏 :报表中的客户名/订单号等真实信息绝不落盘、不发外部,只留必要字段。
- 别让 Agent 直接发邮件:对外发送一律人工确认(合规)。
七、效果
- 耗时:每月 3 小时 → 一键 10 秒(清洗+聚合+图表+排版)
- 准确率:规则固定,无人为遗漏,出错率降为 0
- 复用:模板固化,换数据源就是改配置
总结
Excel 报表自动化是 Agent 的完美场景:
导数据(脚本)→ 清洗(pandas)→ 聚合(规则)→ 图表(模板)→ 排版(模板)→ 人确认发布
一切机械、可重复、有规则的工作都交给 Agent,涉及对外动作(发邮件)永远留给人。 这样每月省下 3 小时,还不背锅。
下一篇(Java 系列收官):接口性能压测与优化实战,从 JMH 到生产瓶颈定位。