【案例】【目标成本编制】利用docx-mailmerge与xlwings实现excel与word自动化办公,节省重复编制文件的时间

有时候,你也挺可爱的。

docx-mailmerge:案例 | 手册
xlwings:官网 | 手册

0.Something useless

0.1 解题思路

本方案利用了word自带的邮件合并功能中的域代码:
用域代码去代替你需要从docx中替换的文本,然后利用xlwings去excel表格中取值,把取的值利用docx-mailmerge完成域代码部分的替换。

0.2 常用技巧

域代码显示切换:

域代码的显示切换
全局切换:ALT+F9
临时切换:Shift+F9

1.设置策划书的模板文件

1.1 设置模板文件路径

from mailmerge import MailMerge  #导入mailmerge模块
SGQCHS = MailMerge(r"C:\Users\Administrator\Desktop\xlwing_Test\Automate\0.M01_项目施工前策划书模板.docx") #选择文件路径

1.2 配合pathlib模块的更好的路径优化

root = pathlib.Path.cwd()     #获取当前路径
Ph_MBCB = root /  '2.M01附件_目标成本计划书.xlsx' #拼贴出计划书路径
Te_QCHS = root /"Template"/"0.M01_项目施工前策划书模板.docx" #拼贴出模板策划书路径
Te_CNS  = root /"Template"/"0.目标成本承诺书模板.docx" #拼贴出模板策划书路径

1.3 设置模板中从excel获取数据值的域名

  1. 这里以标后预算价举例,我们需要抓取excel中的标后预算价来替换这个值,那么我么你先将标后预算价这个框转换成域代码格式,设置自己想要的域名即可。

在这里插入图片描述
在这里插入图片描述

1.4 .get_merge_fields()获取docx模板中定义过的域名

[IN]  :print(SGQCHS.get_merge_fields())
[Out] :{'MBCB', 'JSDW', 'JZMJ', 'RGF', 'CF', 'JXLX', 'CLF', 'JZWGD', 'CSF', 'CHS_GCMC', 'HTJ', 'JXF', 'JJF', 'XMDD', 'JGLX', 'SJDW', 'ZYFB', 'BHYSJ', 'JLDW'}

1.5 .merge()函数让定义的域名取值

document.merge(域名1='某某值',
               域名2='某某值')

**在这里我们可以利用merga函数来联动xlwings抓取的值进行输入。**由于本省邮件合并的域名支持导入文本,所以还需要转换一下格式。
在这里插入图片描述
这里还有些值得一提的几个小问题:

  1. 保留几位小数的问题?
    可以利用round函数来调节xlwings抓取值的小数位。
  2. 百分数的输入问题?
    可以用类似**B7SFL = ‘{:.2%}’.format(SFCH.range(“F36”).value,2)**这样的方式来解决。

1.6 xlwings获取单元格的值

xlwings在这里只需要用他的获取单元格数值的函数即可完成与docx的交互。
在这里插入图片描述

1.7编制完成模板(部分展示)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 【案例】利用脚本造假文件的

2.1 汇总表中标价编制

参数设置页面,输完参数即可自动完成数据编制。
本项目是是可以导出人材机表的,故本次采用到处人才加表汇总的方式。
在这里插入图片描述
简单一个数据透视表搞定。
在这里插入图片描述
接下来我们把人材机搬进计划书中的“参数设置”
在这里插入图片描述
这里由于合同价的问题,我对间接费和措施费有所自行调整。
在这里插入图片描述

2.2 7.1表标后价编制

因为有详细的人材机,所以我们考虑筛选出7.1表中需要的材料部分的具体值,可以用来给后续做“标后预算”进行参考。
这里我利用了PQ和数据透视表进行筛选。
PQ的操作见此文章:(目标责任成本编制)Power Query 和Power Pivot 实战汇总零散数据—目标成本编制数据案例

利用pq做出来的透视表们:
在这里插入图片描述

钢筋:
在这里插入图片描述

混凝土:
在这里插入图片描述

砌块:
在这里插入图片描述

周转材料:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接下来我们将对应的值填入“参数设置”中的人材机,目的是为了获得分配比例,因为我的脚本是取比例的数值的。
在这里插入图片描述

水电材料、其他材料我懒得筛选了,自己瞎编。
剩下的机械费和措施费看着编把,措施费一般是可以从清单捞出来的。同上材料一样,脚本抓取的是比例值。
在这里插入图片描述

2.2 7.1表成本价编制

成本价中我们需要老板提供专业分包和劳务的额度,然后根据实际填。
但这个项目是有要求的。请添加图片描述
由于机械费并没有这么高,所以这里的利润空间我调成了负数的,然后下降措施费的空间。
在这里插入图片描述
到这一步,第一次运行自动化叫版本,到分界线部分即可
在这里插入图片描述
这时候生成的脚本还没有对材料费进行划分
所以我们需要对材料费进行手动计算。

2.3 手动计算成本材料

手动计算我们先估计一个预期的利润值,然后用单变量求解一致循环即可得出值。
具体实操部分可以参考这边文章:目标责任成本的调整技巧
最后得出这些黄色部分的分配值
在这里插入图片描述

2.4 最终分配数据

符合利润率在2.5%左右。以及利润率在6.0%左右的条件。
在这里插入图片描述
在这里插入图片描述
以及最后划入模块的值,,符合预期的设想。
在这里插入图片描述

3 生成其他的word资料

3.1 部分资料联动结果展示

接下来再一次将脚本重新跑一遍,这次全部跑完。你会在output文件下得到三个文件。用时不到几秒钟。
在这里插入图片描述
直接看成本对比吧!(部分展示)
模板对比
在这里插入图片描述
数据对比
在这里插入图片描述

3.2 一些可以优化的小瑕疵

瑕疵还是有的,比如承诺书的项目部的落款排版其实不太规范,后期有时间的话我可能会用python-docx来进行优化。

在这里插入图片描述

4. 后记

4.1 写的话

其实本篇文章本来就是写给同事看的,有炫技的成分,也有看不惯国企的低效、内耗、以及对于技术思维的不理解,他们一成不变的守着旧秩序的传统,一日复一日的如铁律般重复那些旧秩序的操作,我觉得很恶心。

4.2 案例全套文件下载

也许很多年之后,在命运美妙错开的时空里,一个和我同样的想法的同事,希望对你有点帮助吧!
【广西一建】目标责任成本编制自动化脚本

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值