每个月末整理销售报表,复制粘贴搞到半夜?
几十个 Excel 文件要合并,格式还不统一。手动处理不仅慢,还容易出错。
今天教你用 Python + AI 工具实现 Excel 自动化办公。不用学复杂的编程,跟着步骤来,半小时搞定原来一天的活。
一、场景一:合并多个 Excel 文件
公司每个分公司都交一份销售表,格式一样但文件名不同。要汇总成一张总表。
传统做法
打开文件 A,复制数据,打开文件 B,粘贴到下面……重复 20 次。
Python 做法
import pandas as pd
import glob
import os
# 读取目录下所有 Excel 文件
folder_path = "./sales_reports/"
all_files = glob.glob(os.path.join(folder_path, "*.xlsx"))
# 逐个读取并合并
dfs = []
for file in all_files:
df = pd.read_excel(file)
# 加一列标记数据来源
df["来源文件"] = os.path.basename(file)
dfs.append(df)
# 合并成一个 DataFrame
combined = pd.concat(dfs, ignore_index=True)
# 导出结果
combined.to_excel("./merged_sales.xlsx", index=False)
print(f"✅ 合并完成!共 {len(combined)} 条数据,来自 {len(all_files)} 个文件")
运行后,20 个文件 3 秒搞定。
关键点:
glob.glob自动匹配目录下所有.xlsx文件pd.concat纵向合并数据框- 加一列"来源文件"方便后续追踪数据出处
二、场景二:清洗脏数据
从客户那里收到的 Excel 表往往一团糟:有空行、重复数据、日期格式不统一。
常见问题和解决方案
import pandas as pd
from datetime import datetime
df = pd.read_excel("./customer_data.xlsx")
# 1. 删除空行
df = df.dropna(subset=["客户名称", "手机号"]) # 只检查关键字段
# 2. 去除重复记录
df = df.drop_duplicates(subset=["手机号"])
# 3. 统一日期格式
df["下单日期"] = pd.to_datetime(df["下单日期"], errors="coerce")
# 4. 修复常见格式问题
df["客户名称"] = df["客户名称"].astype(str).str.strip()
# 5. 处理异常值:销售额为负数的修正
df.loc[df["销售额"] < 0, "销售额"] = abs(df.loc[df["销售额"] < 0, "销售额"])
# 6. 保存清洗后的数据
df.to_excel("./cleaned_customer_data.xlsx", index=False)
print(f"✅ 清洗完成:原始 {len(df)} 条 → 有效 {len(df)} 条")
清洗前后对比
假设原始数据有 5000 条:
- 删除空行后:4820 条
- 删除重复后:4512 条
- 最终有效数据:4512 条
注意: 清洗过程中建议保留原始文件和清洗日志,方便追溯。
三、场景三:用 AI 辅助生成处理脚本
如果你不想手写 Python 代码,可以让 AI 帮你生成。
方法 1:用 Claude Code / Cursor 生成
把你的需求用自然语言描述:
“我有一个 Excel 文件,包含客户姓名、手机号、订单金额、下单日期。帮我写一段 Python 代码,统计每个客户的总金额,找出消费最高的前 10 名客户。”
AI 会直接生成:
import pandas as pd
df = pd.read_excel("orders.xlsx")
# 按客户分组统计总金额
summary = df.groupby("客户姓名").agg(
总订单数=("订单金额", "count"),
总金额=("订单金额", "sum"),
平均客单价=("订单金额", "mean")
).reset_index()
# 排序取前 10
top10 = summary.nlargest(10, "总金额")
top10.to_excel("top10_customers.xlsx", index=False)
方法 2:用 ChatGPT 快速试错
遇到报错不知道怎么改?直接把错误信息贴给 ChatGPT:
“运行这段代码报 KeyError: ‘下单日期’,我的 Excel 表格里日期列叫’购买时间’”
AI 会告诉你怎么修改列名映射。
四、场景四:自动生成月度报表
每月都要做的报表,完全可以自动化。
import pandas as pd
import glob
from datetime import datetime
def generate_monthly_report(month):
"""生成指定月份的汇总报表"""
# 读取当月所有数据
files = glob.glob(f"./data/{month}_*.xlsx")
if not files:
return f"未找到 {month} 月的数据文件"
dfs = [pd.read_excel(f) for f in files]
data = pd.concat(dfs, ignore_index=True)
# 多维度统计
report = {
"总订单数": len(data),
"总销售额": data["销售额"].sum(),
"平均客单价": data["销售额"].mean(),
"最大单笔订单": data["销售额"].max(),
"最小单笔订单": data["销售额"].min(),
"各品类销售额": data.groupby("品类")["销售额"].sum().to_dict(),
"各地区订单分布": data.groupby("地区").size().to_dict(),
}
# 生成 Markdown 格式的报表
md = f"## {month} 月销售报表\n\n"
md += f"- 总订单数:{report['总订单数']:,}\n"
md += f"- 总销售额:¥{report['总销售额']:,.2f}\n"
md += f"- 平均客单价:¥{report['平均客单价']:,.2f}\n\n"
md += "### 各品类销售额\n"
for category, amount in report["各品类销售额"].items():
md += f"- {category}:¥{amount:,.2f}\n"
# 保存报表
with open(f"./reports/{month}_report.md", "w", encoding="utf-8") as f:
f.write(md)
return "报表生成完成!"
# 使用示例
generate_monthly_report("2026-06")
这个脚本可以放在定时任务里,每月 1 号自动跑。
五、进阶:处理大型 Excel 文件
超过 10 万行的 Excel 文件,pandas 直接加载可能会卡。用这些技巧:
1. 分块读取
# 每次只读 1 万行
chunk_size = 10000
results = []
for chunk in pd.read_excel("large_file.xlsx", chunksize=chunk_size):
# 对每个分块做聚合
chunk_sum = chunk["销售额"].sum()
results.append(chunk_sum)
total = sum(results)
print(f"总销售额:{total}")
2. 改用 Parquet 格式
Parquet 是列式存储格式,读写速度比 Excel 快 10 倍以上:
# 一次性转换
df = pd.read_excel("data.xlsx")
df.to_parquet("data.parquet")
# 之后都用 parquet
df = pd.read_parquet("data.parquet")
3. 使用 DuckDB
DuckDB 可以直接查询 Excel 文件,不需要全部加载到内存:
import duckdb
# 直接查询 Excel,像查 SQL 一样
result = duckdb.query("""
SELECT 地区, SUM(销售额) as total
FROM 'sales.xlsx'
GROUP BY 地区
ORDER BY total DESC
""").df()
print(result)
六、常用库速查
| 库名 | 用途 | 安装命令 |
|---|---|---|
| pandas | 数据处理核心库 | pip install pandas |
| openpyxl | Excel .xlsx 读写引擎 | pip install openpyxl |
| xlsxwriter | Excel 写入(支持图表) | pip install xlsxwriter |
| duckdb | 高性能数据分析 | pip install duckdb |
| xlrd | Excel .xls 旧格式读取 | pip install xlrd |
| tabulate | 终端打印表格 | pip install tabulate |
七、实战 Checklist
下次接到 Excel 处理任务,按这个清单走:
- 先备份原始文件
- 确认文件格式(.xlsx / .csv / .xls)
- 用 pandas 读取后先看
df.head()和df.info() - 检查缺失值和重复值
- 统一日期和数值格式
- 处理异常值(负数、超范围值)
- 用 AI 辅助编写或调试代码
- 保存清洗日志
- 验证输出结果是否正确
八、结语
Excel 自动化办公的核心思路就三步:读取数据 → 处理数据 → 输出结果。
Python 负责自动化,AI 负责帮你写代码。两者结合,原来一天的工作量压缩到半小时。
你平时最常遇到的 Excel 处理难题是什么?留言说说,下期可以针对性写一篇。