尧图网站设计 尧图网站设计YAOTU DESIGN
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.pyimport pandas as pddef main():input_file sales_raw.xlsxoutput_file report.xlsxkey_cols [日期, 销售员, 产品, 数量, 单价, 地区]try:df_raw pd.read_excel(input_file)except FileNotFoundError:print(f【错误】找不到原始文件{input_file})returnexcept Exception as e:print(f【错误】读取文件失败{str(e)})returnmissing_cols [col for col in key_cols if col not in df_raw.columns]if missing_cols:print(f【错误】原始表格缺失关键字段{missing_cols})returndf_clean df_raw.copy()df_clean df_clean.dropna(subsetkey_cols)df_clean df_clean[df_clean[数量] 0]df_clean df_clean.drop_duplicates(subsetkey_cols)if df_clean.shape[0] 0:print(【提示】清洗完成后没有任何有效数据停止生成报表)returndf_clean[销售额] df_clean[数量] * df_clean[单价]df_salesman df_clean.groupby(销售员, as_indexFalse)[销售额].sum()df_salesman df_salesman.sort_values(销售额, ascendingFalse)df_area df_clean.groupby(地区, as_indexFalse)[销售额].sum()df_area df_area.sort_values(销售额, ascendingFalse)total_sum df_clean[销售额].sum()df_total pd.DataFrame([{月度总销售额: total_sum}])with pd.ExcelWriter(output_file, engineopenpyxl) as writer:df_clean.to_excel(writer, sheet_name明细清洗后, indexFalse)df_salesman.to_excel(writer, sheet_name按销售员, indexFalse)df_area.to_excel(writer, sheet_name按地区, indexFalse)df_total.to_excel(writer, sheet_name总览, indexFalse)print(f✅报表生成成功输出文件{output_file})print(f清洗后有效行数{df_clean.shape[0]}月度总销售额{total_sum:.2f})if __name__ __main__:main()generate_test.pyimport pandas as pddata [{日期: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,indexFalse)print(模拟文件 sales_raw.xlsx 生成完毕)README.md# Excel报表生成脚本## 环境依赖python 3.10pip install pandas openpyxl## 运行步骤1. 运行 generate_test.py 生成测试数据sales_raw.xlsx2. 运行 main.py同目录输出report.xlsx3. 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张工作表完整输出确认原始输入文件不会被改写。
返回列表