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

毅种循环,撸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 一键批量自动生成合同相关推荐

  1. java自动生成合同_Java 7和Java 8之间的细微自动关闭合同更改

    java自动生成合同 Java 7的try-with-resources语句和与该语句一起使用的AutoCloseable类型的一个不错的功能是,静态代码分析工具可以检测到资源泄漏. 例如,Eclip ...

  2. Python PaddleNLP实现自动生成虎年藏头诗

    这篇文章主要介绍了利用Python PaddleNLP实现自动生成虎年藏头诗功能,文中的示例代码讲解详细,感兴趣的同学可以跟随小编一起试一试.Python编程学习资料点击免费领取 目录 1.paddl ...

  3. python通过批量经纬度生成标记地图生成

    python通过批量经纬度生成标记地图生成 通过读取excel文件中经纬度数据生成定位图 from pyecharts.charts import Geo from pyecharts import ...

  4. Python实现文章自动生成

    Python实现文章自动生成   下面的Python程序实现了通过从网页抓取一篇文章,然后根据这篇文章来生成新的文章,这其中的原理就是基于概率统计的文本分析.   过程大概就是网页抓取数据->统 ...

  5. python数据字典ppt_Python3自动生成MySQL数据字典的markdown文本的实现

    为啥要写这个脚本 五一前的准备下班的时候,看到同事为了做数据库的某个表的数据字典,在做一个复杂的人工操作,就是一个字段一个字段的纯手撸,那速度可想而知是多么的折磨和锻炼人的意志和耐心,反正就是很耗时又 ...

  6. Python: Git Log自动生成Release Notes,并调用Outlook发送至邮件

    Python: Git Log自动生成Release Notes,并调用Outlook发送至邮件 主要功能 先上图 生成ReleaseNotes 邮件: 生成ReleaseNotes Text: 关键 ...

  7. 怎么自学python自动化测试-python自动化测试如何自动生成测试用例?

    传统的用例需要测试或者开发人员将用户的操作用代码表示出来,通过断言判断是否和预期一致,写测试用例也占用了部分时间,加上版本迭代测试用例的维护成本也较高,于是基于无埋点的需求相结合来检测埋点,及时告警, ...

  8. 如何用python自动改试卷_利用Python和Jinja2自动生成试卷

    一.概述 Jinja2是Python 3下一个被广泛应用的模版引擎,它的设计思想来源于Django的模板引擎,并扩展了其语法和一系列强大的功能.其中最显著的一个是增加了沙箱执行功能和可选的自动转义功能 ...

  9. python+selenium之自动生成excle,保存到指定的目录下

    进行之自动化测试,想把自动生成的excle保存到指定的目录下.网上百度的代码如下: 1 import xlwt 2 import time 3 time = time.strftime ('%Y%m% ...

最新文章

  1. 武汉计算机组成原理八校联盟考试,武汉理工大学《计算机组成原理》在线练习及考试题目.doc...
  2. Codeforces 337D
  3. python三引号 内部变量_python在三引号中使用变量
  4. 排序算法-08基数排序(python实现)
  5. TCP/IP 2.5浮动静态路由
  6. mysql不支持子查询_MySQL不支持子查询优化一例
  7. Python程序每日一练习
  8. linux的strace命令(详解)
  9. 执行ssh-add时出现Could not open a connection to your authentication agent
  10. Linux下的绘图(流程图、UML、mindmap)工具
  11. CSDN上传资源时一直提示 请填写资源tag
  12. sql full left right inner cross 基础
  13. python plt 绘制直方图概率密度和不为1
  14. C#实现基于ffmpeg加虹软的人脸识别
  15. Rejected connection from xx.xx.xx.xx, address already has the configured maximum of 10 connections
  16. 【存储】HDS VSP
  17. pandas处理excel单元格合并后的列
  18. mysql 立方根函数_Java实现牛顿迭代法求解平方根、立方根
  19. seo和sem是什么意思
  20. 办公台式计算机配置费用,原来这才是办公台式机需要的性能?

热门文章

  1. linux 关闭系统中多余的服务
  2. 速通AOSP,成功编译调试Android源码
  3. PHP小马免杀的浅谈[过最新D盾]
  4. 基于广度优先遍历算法求采用邻接表存储的无向连通图G中从顶点u到v的最短路径
  5. cadence中一些常见英文的含义
  6. 区块链是什么通俗解释?
  7. DNS默认的端口号是: 53
  8. [杂言]打坐一定要盘腿么?
  9. php- 秒的转换 (天 小时 分钟) (小时 分钟 )
  10. Mysql循环插入语句