采购清单清洗助手 — Purchase List Excel Cleaner
purchase-list-excel-cleaner· v0.1.2 · 免费 MVP
把供应商、采购员、各部门提交的杂乱采购清单 / 采购订单 Excel,清洗成可审阅的统一采购模板。
它适合处理这些问题:
- 采购单是「上方单头 + 下方明细」两层结构,单头信息没有落到每一行
- 表头叫法不统一,例如“品名 / 物资名称”“订购数量 / 采购数量 / qty”“金额 / 小计”
- 表头不在第一行,前面有标题、订单号、供应商、日期
- 明细行缺物资名称、单位或数量,需要逐行指出
- 表尾有「合计」行,混进数据里造成误判
- 小计与「数量 × 单价」对不上,需要导入前发现
单头回填是这个工具的核心
采购单常见写法:
某公司采购订单
采购单号:CG-2026-0001 供应商 示例供应有限公司
合同编号:HT-2026-018 预计到货 2026/9/15
料号 品名 规格 计量单位 订购数量 含税单价 金额 用途
...
工具会识别上方单头区,把采购订单号、供应商、合同号、日期回填到每一条明细行,
并在报告和 Order Header 工作表中标明每个值来自第几行。
回填错了会污染整张表,所以来源必须可追溯 —— 请务必核对报告里的「单头信息与回填」一节。
若明细表本身也有同名列(例如每行一个供应商),以明细列为准,不做覆盖。
它不是什么
- 不是采购系统
- 不连接任何服务器
- 不读取或写入生产数据库
- 不下单、不审批、不建供应商档案
- 不做财务核算、税额计算或价格合规判断
- 不替代采购、仓管或财务复核
使用前请阅读 DISCLAIMER.md。
输出内容
运行后生成:
| 文件 | 用途 |
| --- | --- |
| cleaned_purchase_template.xlsx | 清洗后的标准采购模板(含单头、字段映射、异常、提醒、统计工作表) |
| purchase_report.md | 单头回填来源、字段映射、统计、异常行、提醒 |
| errors.csv | 异常行明细,可直接发给制单人核对 |
标准列顺序:
采购订单号, 供应商, 合同号, 提单号, 申请日期, 预计到货日期, 发票日期, 计划单位, 物资编码, 物资名称, 规格型号, 单位, 采购数量, 单价, 小计, 备注
明细行必填:物资名称、单位、采购数量。
物资编码 不作必填 —— 供应商发来的采购单通常没有你的内部编码,缺失只提醒、不拦截。
金额怎么处理
第一版对钱的态度是保守的:
单价、小计只做格式清洗(去掉千分位、货币符号),并以数字类型写入,下游无需二次转换- 两者都有时,若
小计与采购数量 × 单价相差超过 1%,给出提醒 小计为空时留空并提醒,工具不代算金额- 税率、含税/未税口径、多币种:只识别并提醒,不入模板列
本地使用
cd purchase-list-excel-cleaner
python3 scripts/clean_purchase_excel.py path/to/input.xlsx --out-dir outputs
要求:
- Python 3.9+
openpyxl
示例
运行内置烟测:
python3 tests/run_smoke_test.py
预期结果:
- 生成一份两层结构的乱表样例
- 从单头识别出订单号、供应商、合同号、预计到货日期
- 清洗出 3 行有效数据
- 标记 2 行异常数据
- 跳过 1 行「合计」汇总行
- 生成三份输出文件
设计边界
本工具借鉴真实矿山仓储系统中采购订单的字段结构,但输出文件不等于任何生产系统的直接导入格式。 该系统目前没有采购 Excel 导入接口,因此本 Skill 定位是「采购清单整理与预检」,不是「采购导入工具」。
清洗结果必须由人工确认后,才能进入任何真实采购或仓储流程。
相关 Skill
同系列的物资入库场景请用 material-inbound-excel-cleaner。两者模板和必填项不同,不要混用。
本工具不会自己判断你上传的是什么表 —— 你选了它,意图就已经确定了。
唯一例外:如果一行都清洗不出来(全部明细行都没通过必填校验),报告顶部会给一句提示,指出这份表更像入库清单、盘点表还是领料单,并在对应 Skill 已发布时给出名字。这只是提示,不会自动切换模板,也不会替你重新处理。
反馈
如发现字段误识别、单头回填错误、异常行误判或模板不适配,请反馈至:ruanchaoyin@ruancyai.com。
Scan to join WeChat group