浏览 AI 知识库

Python 批量处理 Excel:保留原文件并生成差异报告

用 Python 批量清洗 Excel 时,原文件、公式、日期和异常行都要保留证据。输出一份新文件和差异报告,比直接覆盖“整理干净”更重要。

按实际操作顺序推进

每完成一段就检查当前输出,确认结果符合预期后再继续。

  1. 01准备动手前,把材料和不能改的部分定下来
  2. 02执行保留原值和行号,再生成规范值与异常表
  3. 03检查为什么“数据行数一致,工作簿仍可能损坏”还不能交付
  4. 04完成新文件、差异报告与异常行通过哪些检查才算完成
从手头这一份材料开始

表格看起来整齐了,公式和异常日期却一起丢了

Python 脚本清洗 Excel 时直接覆盖原文件,公式变成值,两个无法解析的日期被改成空白。结果看似整齐,却无法追责。

  • 原文件哈希未变
  • 差异报告覆盖所有变更
  • 异常行未静默丢失
本例材料

动手前,把材料和不能改的部分定下来

需要确认本例内容
现有材料`orders.xlsx` 含 3 个工作表、公式、合并单元格与 860 行数据;目标只规范日期和渠道名称。
不能越过的边界原文件只读,输出新文件;公式与样式变化单列;异常行保留原值、原因和行号。
要交付的结果新文件、差异报告与异常行
实际操作

Python 批量处理 Excel,从“读取时保护类型”开始做

读取时保护类型

明确编码、分隔符、工作表、标题行和容易丢失前导零的字段,先输出行列和样例。

规则数据化

每条清洗规则写字段、条件、动作、优先级和异常处理,不把口径散在代码分支里。

保留原值和行标识

为修改字段新增规范值列,保留源文件行号或主键,无法判断的行进入异常表。

小样本与边界验证

测试空值、中文、日期、金额、科学计数、重复和极端长度,比较手工预期。

输出可重算交付

生成新文件、规则版本、修改计数、逐行差异和异常清单,重跑相同输入结果一致。

数据清洗案例

保留原值和行号,再生成规范值与异常表

原始输入规则输出异常
订单号 00123按字符串读取,保留前导零规范订单号 00123不能变成 123
日期 2026/9/1统一为 ISO 日期2026-09-01无法解析进入异常表
金额 ¥1,299.00去货币符号,保留两位小数1299.00负号/空值单独标记
重复订单行按主键和时间判定保留原行并标记重复不自动删除

字段和规则为演示;真实清洗需由业务负责人确认口径。

最终输出

完成后的新文件、差异报告与异常行

脚本生成 `orders_cleaned.xlsx` 和 `orders_diff.csv`。修改 114 个渠道值、转换 812 个日期,2 个歧义日期保留原值并标异常;公式数量与源文件一致,原文件哈希未变。

常见失败

为什么“数据行数一致,工作簿仍可能损坏”还不能交付

数据行数一致,工作簿仍可能损坏

原因
只比较单元格值,遗漏公式、工作表和格式
怎么改
检查 sheet、行列、公式计数、关键样式与重开结果
验收方式

新文件、差异报告与异常行通过哪些检查才算完成

进一步核对

脚本自动化:参考资料与核对入口