表格乱到不想看?我做了个 Excel 清洗器,空行空格重复项一键处理
Vibe Coding 100 天挑战 · Day 9
今天做的工具叫 excel-cleaner。
它解决的是一个办公场景里特别常见的问题:
表格不是不会分析,而是太脏了。
为什么要做它?
很多 Excel 表格看起来只是“有点乱”。
但真正开始处理时,你会发现它到处都是坑:
这些问题很小。
但它们会让后续分析变得很痛苦。
比如你想做透视表,结果同一个城市出现了两个版本:
ShanghaiShanghai
看起来差不多,但对 Excel 来说可能是两类数据。
所以 Day 9 我做了一个本地清洗工具:
输入一个脏 Excel,输出一个干净 Excel,再给你一份清洗报告。
这次的 MVP
第一版先解决最常见的脏数据问题:
命令长这样:
python src/excel_cleaner.py examples/dirty-orders.xlsx -o examples/clean-orders.xlsx --dedupe --report examples/clean-report.json
默认不会覆盖原文件。
这点很重要。
因为清洗数据时,最怕的不是工具慢,而是原始数据被直接改坏。
实际跑一下
我做了一个示例订单表,里面故意放了:
运行工具后,输出是这样的:
输入: examples\dirty-orders.xlsx
输出: examples\clean-orders.xlsx
[Orders]
修剪文本单元格: 11
规范换行单元格: 1
删除空行: 1
删除空列: 1
删除重复行: 1
报告: examples\clean-report.json
这就是我想要的效果:
不仅把表格清干净,还要告诉我到底改了什么。
它现在支持什么?
这一版的功能不追求复杂,但尽量覆盖最容易让人崩溃的脏表问题。
1. 文本清洗
- 合并连续空白,减少“看起来一样但其实不一样”的值。
2. 结构清洗
3. 重复行处理
4. 清洗报告
- 报告里会记录修剪单元格、删除空行空列、删除重复行的数量。
为什么不默认去重?
因为“重复”在表格里有时候很微妙。
同一条订单重复出现,可能是脏数据。
但同一个客户买了两次同样金额的商品,也可能是正常数据。
所以我把去重做成显式选项:
python src/excel_cleaner.py dirty.xlsx -o clean.xlsx --dedupe
也就是说:
工具可以帮你处理,但关键风险动作要你明确点头。
这个原则和前几天的文件清理、PDF 处理一样。
自动化可以提速,但不应该悄悄替你做危险决定。
实现思路
核心依赖是 openpyxl。
处理流程大概是:
为什么删除行列要从后往前?
因为如果从前往后删,行号和列号会不断变化,很容易跳过某些行。
这类细节不大,但是真正在处理表格时很关键。
Day 9 的收获
今天这个工具让我又一次感受到:
很多办公自动化不是为了做复杂分析,而是先把数据整理到能分析。
表格脏的时候,后面所有操作都会变难:
透视表会乱。
筛选会乱。
统计会乱。
导入系统也会乱。
所以清洗不是可有可无的小步骤。
它是让后续工作变顺的第一步。
下一步可以怎么迭代?
后面可以继续加:
Day 9 先到这里。
今天的成果是一个能处理常见脏 Excel 的本地清洗 CLI。
项目源码:GitHub - Day 9 excel-cleaner