扫码手机访问
35
微信扫码分享
openpyxl是一个操作Excel非常好用的库,功能相对于xlrd、xlwt来说更为完整,我们首先安装它:
docxtpl 是一个操作Word非常好用的库,其主要通过对docx文档模板加载,从而对其进行修改,我们也安装下这个库。
我们可以通过load_workbook方法打开合同数据(Excel表),然后读取每一个合同数据并存入到data字典,再将每个字典放入到列表datas中。PS:由于读取的签约日期是一个时间戳,需要通过strftime方法转为标准的年月日格式。
当然,我们也可以通过pandas大法来读取合同数据,主要运用到dataframe_to_rows方法,将pandas格式的数据转为一行一行的数据。index=False表示不需要索引,header=False表示不需要表头。
我们可以打印datas,效果如下:
这里运用for语句遍历每一个合同数据data(字典格式),打开合同模板,并将data替换掉合同模板中的数据,然后保存为新的销售合同。
代码运行后,效果如下:
打开其中一个销售合同,效果如下:
最终结果如下:
这个需求的实现可以帮助我们解决很多问题,让我们一起来分析一下
原本我们需要将Excel汇总表中每一行的信息填进word模板中,生成相应的合同。现在我们需要交给python来实现,就引出了一个问题:程序如何知道要将某个信息填到哪个下划线?为了解决这个问题,我们需要对模板进行修改,即将下划线改成某种标识,让程序可以“看到标识就明白此处应该放什么信息”
这里采取的策略是:将需要填写的下划线改成汇总表中的列名,即
这样程序就可以识别需要填写什么内容了。所谓的识别在这里可以换一个特别简单的词,即文本替换,只要检索到#xxxx#(excel中的列名),把这个替换成具体的信息就可以了。出于这种策略,列名就需要用#xxxx#的格式,否则正常的无关文本中的信息也会被替换,就破坏了原有的需求了
最后模板被修改成如下:
通过Excel表我们可以看到,一行为一个公司的信息,而每一列的列名就存在于模板中,用各个公司的实际信息替换到模板中的列名(程序识别和文本替换的依据)就可以完成这个需求。整个大需求的实现可以按照下面的步骤:
遍历表格中文本的代码如下:
有了这些补充的知识我们就可以完成最核心的代码了:
本次的需求可以延伸成为:将一份信息汇总表Excel中的每一个单独信息(每一行或者每一列为个人、公司或者其他的信息)填写到指定的模板Eord中,生成单独的文档,因此需要理解内涵如果你有正在烦恼的办公需求,欢迎在 早起Python 公众号后台留言
上一篇:土地出让中介合同(推荐6篇)
下一篇:土地买断合同范本(推荐15篇)
微信扫码领取福利