社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

Python中文社区 • 6 年前 • 1295 次点击  


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


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

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

一、背景

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

先上成果图:

二、准备工作

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

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

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

三、代码

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

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

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

1、引入库:

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

2、定义替换函数:

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

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

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

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

4、读取excel内数据:

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

5、循环读取并替换:

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

四、使用

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

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

五、代码下载

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

 zhi

  支

 chi

  持

 zuo

  作

 zhe

  者



热 门 推 荐

用Python创建微信机器人

用Python机器人监听微信群聊

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

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

推荐Python中文社区旗下的几个服务类公众号

征稿启事 | Python中文社区有奖征文

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/33740
 
1295 次点击