用 Python 一键批量自动生成合同

时间:2024-05-22 22:30:43

用 Python 一键批量自动生成合同

图片来源于网络  文/毅种循环


毅种循环,撸python和撸柯基,一个都不能少。

本文作者已加入Python中文社区专栏作者计划

一、背景

工作中经常会需要做大量的合同,不复杂,也就是在合同模板里修改几个合同要素,但是必须打开合同一页一页的翻找修改,合同太多或者手头其他事情纠缠在一起的时候,难免会漏掉。正好最近在学python,我发现解决这个问题还是很简单的。

先上成果图:

用 Python 一键批量自动生成合同

二、准备工作

首先,将合同模板里需要替换的要素全部用编号替换掉。(标黄的是每次都会改变的要素,如:金额、合同编号等;标绿的是偶尔会变的要素,如:公司名称、法人等)

用 Python 一键批量自动生成合同

其次,做一张合同要素的EXCEL表,A列为合同中刚刚设置的要素编号,其他列就是对应的要在合同中替换的新内容。(注意:单元格格式要设置成文本格式)

用 Python 一键批量自动生成合同

做这样一张合同要素表其实好处很多,一是很直观的记录所有客户的信息,方便维护;二是便于部门同事之间的协作。

三、代码

准备工作做完就该上代码了,如果没兴趣的话可以直接看最后下载部分,我将py文件封装成了exe文件,这样即使电脑没装python也可以使用。

这里主要使用了三个库:docxopenpyxlos

docxopenpyxl需要安装,其中docx安装过程中可能会报错,可以在https://www.lfd.uci.edu/~gohlke/pythonlibs/网址中搜索python_docx-0.8.10-py2.py3-none-any.whl,下载安装。

1、引入库:

用 Python 一键批量自动生成合同

用什么函数就引入什么函数,不然打包成的exe文件会非常大。

2、定义替换函数:

用 Python 一键批量自动生成合同

word中的一个自然段,就是一个paragraph,而一个paragraph是由许多run组成的,加粗、斜体都会形成一个单独的run,如图所示:

用 Python 一键批量自动生成合同

类似的,word中的每个表格为一个table,表格中的行是rows,每一个row包含列,在这里叫做单元格(cell)cellparagraph相似。

3、获取excel和word的文件名:

用 Python 一键批量自动生成合同

利用os库读取文件夹内的文件名,这样只要格式是xlsx和docx,任意文件名都可以直接使用。

4、读取excel内数据:

用 Python 一键批量自动生成合同

先获取excel内sheet名列表,选择第一个读取,这样就不需要关心表格内sheet的命名了。

5、循环读取并替换:

用 Python 一键批量自动生成合同

逐列读取每一个客户的全部信息,然后逐行调用替换函数进行替换,最后生成docx文件。

四、使用

将本程序py文件(或者打包好的exe文件)与合同模板(docx文件)、合同要素(excel文件)放入同一文件夹,运行py或exe文件,就会在文件夹内自动生成。

延伸:python你甚至可以将客户的电子邮件写在excel文件的客户信息里,调用smtplib和email库自动将做好的合同发过去。

五、代码下载

公众号后台回复“合同”获取本文完整代码和程序下载链接。

 zhi

  支

 chi

  持

 zuo

  作

 zhe

  者

用 Python 一键批量自动生成合同



热 门 推 荐
用Python创建微信机器人

用Python机器人监听微信群聊

用Python获取摄像头并实时控制人脸

开源项目 | 用Python美化LeetCode仓库

推荐Python中文社区旗下的几个服务类公众号
征稿启事 | Python中文社区有奖征文

用 Python 一键批量自动生成合同

▼ 点击成为社区注册会员          「在看」一下,一起PY!