可一键合并清洗多部门销售表并生成带格式汇总报表。通过pip安装依赖、放置文件、运行python脚本,自动完成读取、去空行、过滤异常单、提取部门、计算提成、分组统计及美化导出。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要把销售部、市场部、运营部交来的十几份格式不统一的Excel报表,合并清洗后生成带部门汇总和提成计算的干净总表,手动做一次要近一小时且常漏掉空行或算错提成比例。
安装依赖与准备数据文件夹
打开命令行(Windows按Win+R→输入cmd→回车),粘贴运行这行命令:
pip install pandas openpyxl
新建一个文件夹,比如叫“待处理销售表”,把所有原始Excel文件(.xlsx格式)全部放进去——【文件名不要含中文括号、&、#等特殊符号,否则读取会报错】。
这一步操作起来很简单,直接把文件拖进去就行。
批量读取并合并所有销售表
复制以下代码,粘贴进文本编辑器(如记事本),保存为process_sales.py,注意把第3行的路径改成你自己的文件夹路径:
import pandas as pd
import os
file_dir = r"D:待处理销售表" # ← 这里替换成你的真实路径
all_data = []
for filename in os.listdir(file_dir):
if filename.endswith(".xlsx") and not filename.startswith("~$"): # 跳过临时文件
df = pd.read_excel(os.path.join(file_dir, filename))
all_data.append(df)
final_df = pd.concat(all_data, ignore_index=True)
双击运行process_sales.py,控制台若显示“Process finished with exit code 0”即表示合并成功;如果报错ModuleNotFoundError,说明上一步pip install没执行成功,需重装。
清洗脏数据:去空行、过滤无效订单、补全部门字段
在刚才的代码末尾追加以下清洗逻辑:
# 删除关键列为空的行(订单号、销售额、日期缺一不可)
final_df = final_df.dropna(subset=["订单号", "销售额", "日期"])
# 过滤掉销售额≤0的异常单(如退货、测试单)
final_df = final_df[final_df["销售额"] > 0]
# 从文件名提取部门名(例:市场部_202605.xlsx → “市场部”)
import re
def extract_dept(name):
match = re.search(r"^(.*?)_\d{6,8}", name)
return match.group(1) if match else "未知部门"
dept_list = [extract_dept(f) for f in os.listdir(file_dir) if f.endswith(".xlsx")]
final_df["部门"] = [d for d in dept_list for _ in range(len(pd.read_excel(os.path.join(file_dir, f))))] # ← 此处必须严格对应每个文件的行数,否则部门列会错位
这步最容易出错:如果部门列和数据行数对不上,后续分组统计将完全失真。务必确认每个Excel文件的行数之和等于final_df.shape[0],否则需改用循环中逐文件添加dept列的方式重写。
新增提成列并按部门汇总统计
继续追加代码:
# 新增提成列(销售额×8%)
final_df["提成"] = (final_df["销售额"] * 0.08).round(2)
# 按部门分组求和
summary = final_df.groupby("部门")[["销售额", "提成", "订单数"]].sum().reset_index()
# 补充计数列(该部门总订单笔数)
summary["订单笔数"] = final_df.groupby("部门")["订单号"].count().values
# 按销售额降序排列
summary = summary.sort_values(by="销售额", ascending=False)
此时summary就是一个含4列的DataFrame:部门、销售额、提成、订单笔数。
导出为带格式的Excel汇总表
最后追加导出语句:
# 导出为新Excel文件
summary.to_excel("销售汇总_202606.xlsx", index=False)
# 用openpyxl美化表头(加粗+浅蓝底纹)
from openpyxl import load_workbook
from openpyxl.styles import Font, PatternFill
wb = load_workbook("销售汇总_202606.xlsx")
ws = wb.active
for cell in ws[1]:
cell.font = Font(bold=True)
cell.fill = PatternFill(start_color="DDEBF7", end_color="DDEBF7", fill_type="solid")
wb.save("销售汇总_202606.xlsx")
运行完成后,当前目录下会出现“销售汇总_202606.xlsx”,打开即可看到带格式的最终报表。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











