拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Excel报表生成脚本

Excel报表生成脚本

1.需求澄清清单

项目目标

读取原始销售文件 sales_raw.xlsx ,完成脏数据清洗、销售额统计,输出多工作表报表 report.xlsx ;程序不得修改原始输入文件,各类异常场景输出可读中文提示。

输入

输入文件: sales_raw.xlsx

数据表字段:日期、销售员、产品、数量、单价、地区

原始数据包含脏数据:关键字段空值、重复记录、数量小于等于0的异常数据。

输出

输出文件: report.xlsx ,包含4张工作表:

1. 明细清洗后:清洗完成后的有效业务明细

​2. 按销售员:按销售员维度汇总销售额

​3. 按地区:按地区维度汇总销售额

​4. 总览:月度整体销售总额

边界条件

1. 原始输入文件找不到,打印错误提示,程序直接退出,不生成输出文件。

​2. 原始表格缺少业务关键字段,打印错误提示,程序直接退出。

​3. 经过清洗之后无任何有效业务数据,给出提示,不生成报表文件。

​4. 仅读取原始文件,全程不修改、不覆盖 sales_raw.xlsx 原始文件。

验收标准

1. 脚本可一键运行,正常场景成功生成 report.xlsx ,4个工作表完整齐全。

​2. 数据清洗逻辑生效:删除关键字段为空的行、过滤数量≤0异常记录、按全部字段做去重处理。

​3. 销售额计算公式:销售额 = 数量 × 单价;分组汇总统计结果计算准确。

​4. 异常场景程序不会崩溃终止,输出通俗易懂的中文提示信息。

2 .可运行源代码工程

目录结构

task1/

├─ main.py # 主业务代码

├─ generate_test.py # 生成模拟测试数据脚本

├─ README.md # 项目运行说明

└─ sales_raw.xlsx # 原始销售数据,运行generate_test.py自动生成

main.py

import pandas as pd

def main():

input_file = "sales_raw.xlsx"

output_file = "report.xlsx"

key_cols = ["日期", "销售员", "产品", "数量", "单价", "地区"]

try:

df_raw = pd.read_excel(input_file)

except FileNotFoundError:

print(f"【错误】找不到原始文件:{input_file}")

return

except Exception as e:

print(f"【错误】读取文件失败:{str(e)}")

return

missing_cols = [col for col in key_cols if col not in df_raw.columns]

if missing_cols:

print(f"【错误】原始表格缺失关键字段:{missing_cols}")

return

df_clean = df_raw.copy()

df_clean = df_clean.dropna(subset=key_cols)

df_clean = df_clean[df_clean["数量"] > 0]

df_clean = df_clean.drop_duplicates(subset=key_cols)

if df_clean.shape[0] == 0:

print("【提示】清洗完成后,没有任何有效数据,停止生成报表")

return

df_clean["销售额"] = df_clean["数量"] * df_clean["单价"]

df_salesman = df_clean.groupby("销售员", as_index=False)["销售额"].sum()

df_salesman = df_salesman.sort_values("销售额", ascending=False)

df_area = df_clean.groupby("地区", as_index=False)["销售额"].sum()

df_area = df_area.sort_values("销售额", ascending=False)

total_sum = df_clean["销售额"].sum()

df_total = pd.DataFrame([{"月度总销售额": total_sum}])

with pd.ExcelWriter(output_file, engine="openpyxl") as writer:

df_clean.to_excel(writer, sheet_name="明细清洗后", index=False)

df_salesman.to_excel(writer, sheet_name="按销售员", index=False)

df_area.to_excel(writer, sheet_name="按地区", index=False)

df_total.to_excel(writer, sheet_name="总览", index=False)

print(f"✅报表生成成功!输出文件:{output_file}")

print(f"清洗后有效行数:{df_clean.shape[0]},月度总销售额:{total_sum:.2f}")

if __name__ == "__main__":

main()

generate_test.py

import pandas as pd

data = [

{"日期":"2026‑09‑01","销售员":"张三","产品":"A产品","数量":10,"单价":20,"地区":"广西"},

{"日期":"2026‑09‑01","销售员":"李四","产品":"B产品","数量":-5,"单价":15,"地区":"广东"},

{"日期":"2026‑09‑02","销售员":"张三","产品":"A产品","数量":8,"单价":20,"地区":"广西"},

{"日期":"2026‑09‑02","销售员":"王五","产品":"C产品","数量":0,"单价":30,"地区":"湖南"},

{"日期":"2026‑09‑03","销售员":"李四","产品":"B产品","数量":7,"单价":15,"地区":"广东"},

{"日期":None,"销售员":"张三","产品":"A产品","数量":6,"单价":20,"地区":"广西"},

]

df = pd.DataFrame(data)

df.to_excel("sales_raw.xlsx",index=False)

print("模拟文件 sales_raw.xlsx 生成完毕!")

README.md

# Excel报表生成脚本

## 环境依赖

python >=3.10

pip install pandas openpyxl

## 运行步骤

1. 运行 generate_test.py 生成测试数据sales_raw.xlsx

2. 运行 main.py,同目录输出report.xlsx

3. report.xlsx包含4个工作表:明细清洗后、按销售员、按地区、总览

## 异常场景

- 文件不存在:打印错误直接退出

- 字段缺失:打印字段缺失提示

- 清洗后无有效数据:提示,不输出报表

- 不会修改原始sales_raw.xlsx文件

3.测试用例

用例1:正常业务用例

输入:模拟 sales_raw.xlsx ,共6行,包含各类脏数据。

预期结果:过滤脏数据,保留3条有效记录,成功生成report.xlsx,月度总销售额465.00。

实际运行结果:控制台输出 清洗后有效行数:3,月度总销售额:465.00 ,4张工作表全部生成。

用例2:边界异常用例1 — 原始文件不存在

操作:删除 sales_raw.xlsx ,直接运行main.py。
预期输出: 【错误】找不到原始文件:sales_raw.xlsx ,程序结束,不会生成输出文件。

用例3:边界异常用例2 — 清洗后全部数据无效

构造条件:表格全部记录的数量字段全部小于等于0。
预期输出: 【提示】清洗完成后,没有任何有效数据,停止生成报表 ,不生成report.xlsx。

4 .AI协作过程记录

关键对话摘要

1. 初期编写代码遇到库缺失报错 ModuleNotFoundError: No module named 'pandas' ,电脑同时存在两套Python环境,Anaconda自带pandas但是无法正常启动,官方Python3.13缺少第三方库。

​

2. 使用pip命令为Python3.13安装pandas、openpyxl,解决库依赖问题。

​

3. 编码过程出现中文全角标点,引发语法报错,统一全部修改为英文半角符号。

​

4. 运行时报找不到 sales_raw.xlsx ,因缺少考题原始样例文件,编写脚本自动生成携带脏数据的模拟测试Excel。

​

5. 反复对照考题需求,完善数据清洗规则、分组统计逻辑、4个工作表输出,补充各类异常捕获逻辑,保证原始文件不会被修改。

代码核心修改变更


1. 增加try‑except异常捕获,处理文件不存在、文件读取异常、表格字段缺失校验。
​
2. 使用 df_raw.copy() 复制副本,保护原始数据不被程序改动。
​
3. 实现完整清洗逻辑:关键字段空值删除、过滤数量>0、全字段去重。
​
4. 增加groupby分组,分别按销售员、地区做销售额汇总,计算月度总金额。
​
5. 使用ExcelWriter一次性输出4个工作表到report.xlsx。
​
6. 增加控制台打印,输出面向用户的中文可读提示。


5 .复盘


大部分代码框架、第三方库API调用、异常处理模板交由AI完成。我人工核对业务逻辑,逐条对照考题校验清洗规则:空行删除、数量≤0过滤、全字段去重。文件缺失、字段缺失、清洗后无有效数据等边界场景,由我对照验收标准人工确认,校验异常提示信息可读性。
人工审查AI生成代码的缩进、标点符号、文件路径风险;模拟测试数据由AI生成,我手动核对输出报表,手工验算统计结果,确认4张工作表完整输出,确认原始输入文件不会被改写。

返回列表