每周,我都要花好几个小时处理一份Excel;需要从五六个不同的表中调取数据,然后对比判断;脑子不清醒的时候都能直接宕机;有时候也能把清醒的脑子变成不清醒。
N个步骤,还得从表中提炼数据去平台中调取新的数据,无数次核对列名和公式。一不留神就会漏行、填错、格式乱掉。最怕的是:一不小心漏了哪步就会出错,出错就是大事。
昨天,我花了很长时间先梳理了需求,然后在DC的指导下写了一个Python脚本;从着手写需求到调试到最后的成功,花了我4个小时。在写需求的时候,我是快乐的,因为我期待着成功之后的便捷。如今,1分钟跑完全程;这种一劳永逸的付出,让我再次体会到了我心飞扬!python简直神一般的存在。’
今天就把这个自动化思路和工具分享出来,或许能帮你省下同样多的燃眉之急。
一、为什么需要这个工具?
我在日常工作中,每周都得需要处理集中大量“待付款合同”数据。
流程大致是:
-
从业务平台中导出“订单数据”;
-
手工对照“含有退税信息”的表和“采购表”;
-
根据一套复杂的规则(发货情况、双方判断、开票情况等)逐行填写几十列信息;
-
还要保证原始表格的格式不被破坏。
最后的目的就是判断采购合同本周是否需要开票。
每周都要重复相同操作,不仅耗时,还容易出错。更麻烦的是,有些数据需要分步从平台导出再导回,人工衔接很容易遗漏或错行。
昨天突发奇想,一鼓作气写了一个 Python 脚本,把整个流程自动化了。下面我就把实现思路和效果分享出来,希望能给有类似需求的朋友一些启发。
从O列到X列的表头到内容,都是自动生成的,再也不需要我手动操作啦!
二、工具整体流程(分步交互)
这个工具采用了“两步法”的设计,每一步都只做一件事,我只需按要求导入/导出平台,其余都由脚本自动完成。
|
步骤
|
做的事
|
生成的文件
|
| --- | --- | --- |
|
第一步
|
从“待付款合同”表中提取【采购合同号】,生成导入文件
| 待带出订单号的采购合同号.xlsx |
|
第二步
|
我把上一步文件导入平台,导出“订单数据”;脚本自动判断发货情况,再生成新的导入模板
| 待导出出售方及合同编码的订单号-前期文件.xlsx |
|
第三步
|
我再把模板导入平台,导出匹配信息;脚本把合同编码、币种、出售方回填
|
(更新“订单数据”)
|
|
第四步
|
脚本自动从“含退税信息的表”和“采购合同”中抓取信息,最终向“待付款合同”表追加9列计算结果
|
原表更新(保留格式)
|
每一步都有清晰的提示,我只需按回车键继续,完全不需要记忆复杂操作。
每一步都在等我新的表格,当新表格放入后,就可以摁回车继续拉!
三、自动化帮我实现了什么
1. 【平台中采购合同号】的生成规则
- 原待付款表中采购合同号分布在不同的列,而平台中采购合同号只有一种,就根据指定的规则,比如大于1234号就取第一列中的采购合同号,小于等于1234就取第二列中的采购合同号
2. 【平台中发货状态】的判断
根据同一采购合同号下的总台数(A)、完成台数(B)、实际发货数量(C):
| 条件 | 结果 | | --- | --- | | A == C | 全部发货 | | A == B 且 C == 0 | 全部完成,未发货 | | A == B > C > 0 | 全部完成,部分发货 | | C == 0 且 B == 0 | 未完成 | | A > B 且 C == 0 | 部分完成,全部未发 | | A > B > C > 0 | 部分完成,部分发货 | | 其他 | 待核实 |
3. 【双方判断结果】的组合规则(部分示例)
| 待付款表格的情况 | 平台中发货情况 | 双方判断结果 | | --- | --- | --- | | 全部发货 | 全部发货 | 双方均已发货 | | 部分发货 | 含“部分发货” | 双方均部分发货 | | 不是全部发货 | 全部发货 | 单方发货-平台 | | 全部发货 | 不是全部发货 | 单方发货-待付款 | | 未发货 | 非“全部/部分发货” | 本月无需操作 |
4. 【开票情况】的计算
-
当“双方判断结果”为“双方均已发货”时:
-
若对应的“是否退税”列包含“是”,则生成
{当前年月}-进项-待定; -
否则生成
{当前年月}-进项。 -
其他情况留空。
四、效果对比
-
手工处理
:一个合同号约需 5-10 分钟,每次处理几百行,需要半天以上,且容易看错行。
-
脚本处理
:全程不到 1 分钟(中间两次导入导出平台仍然需要人工,但核对和填写工作完全免除)。
更重要的是,错误率降为 0(只要原始数据正确)。
五、使用方法
- 准备好以下文件放在同一目录:
-
待付款合同 -
含退税信息的表 -
采购合同数据
2.运行脚本(需安装 Python 及 pandas、openpyxl)
按屏幕提示分步操作:
-
脚本生成第一个导入文件 → 用户导入平台→ 导出“订单数据”放回目录 → 按回车;
-
脚本生成第二个导入文件 → 用户再次导入平台 → 导出“已导出”文件放回目录 → 按回车;
-
脚本自动完成所有填充,并更新“待付款合同”表。
3.终极效果
直接在原表上新增9列数据,并做出相应的判断,原有格式统统保留。
七、总结
这个工具目前已经稳定运行了多轮,处理了几十份真实合同数据,零差错。它把我们从重复、繁琐、易错的表格处理中解放出来,可以把精力放在更有价值的事情上。
如果你也有类似的 Excel 自动化需求,不妨试试 “分步交互 + pandas + openpyxl” 的组合。