比方说,有一天我开了一家空调公司,我暂时给他打电话天强空调安装设备公司酒吧,假装自己有公司,拿个大生意,就是给甘肃省的各个高校安装空调(其实这里的气候基本不用空调,试想一下),那么接下来就是面对签约,所以甘肃省很多高校都要签上百个合同, 捷径是什么?
不用说,我们优先使用python来解决这个问题,python是办公自动化的强大工具,本节使用python批量生成合约,学习这个解决重复录制合约的问题,让我们一起学习习
示例工具:anconda37Python 库安装首先,安装本节需要用到的两个包,openpyxl 和 docxtpl 库,在 ** 行中使用以下命令完成安装。本文介绍了 openpyxl 和 docxtpl 库的使用。
适用范围:Python批量生成合约。
!pip install openpyxl!pip install docxtpl当出现“成功安装”字样时,安装成功。
设置合同模板
设置一个合约模板,在文档中插入数据的地方插入一个类似于 } 的标签,并传入字典 } 在标签上呈现数据 1234,其他下划线以类似的方式设置。
实际上,本文使用 python 批量生成合约的做法类似于 word 中通过邮件合并批量生成合约的做法,更加灵活高效。
导入合约数据
导入预先录制的合同数据,包括甲方、乙方、产品名称等字段,并将合同日期转换为字符。
import pandas as pdfrom openpyxl.utils.dataframe import dataframe_to_rowsdf = pd.read_excel(r'C:用户商天强台式空调合同为高等院校。 xlsx')df["合同日期"] = df["合同日期"].apply(lambda x:x.strftime("%y-%m-%d"))datas = df
循环遍历每一行数据并将其存储在字典中,使用 append 函数合并字典,并打印结果,如下所示。
for row in dataframe_to_rows(df,index=false,header=false): data = datas.append(data)datas
此外,还可以使用 openpyxl 库将合约数据导入到字典中,原理与上面的导入方法相同。
from openpyxl import load_workbookwb = load_workbook(r'C:用户商天强台式空调合同为高等院校。 xlsx')ws = wb['sheet1']datas = for row in range(2, ws.max_row): a = ws[f"a"].value b = ws[f"b"].value c = ws[f"c"].value d = ws[f"d"].value e = ws[f"e"].value f = ws[f"f"].value f = f.strftime("%y-%m-%d") data = datas.append(data)datas导入docxtpl库,提前导入之前创建的合约文档模板,使用render函数渲染{}中的内容,从而达到批量插入数据的目的。
from docxtpl import docxtemplatefor data in datas: tpl = docxtemplate(r'C:用户商天强桌面承包各高校空调安装。 docx') tpl.render(data) tpl.s**e(r'C:用户上天强桌面合同生成{}的空调安装合同。 docx'.format(data['甲方']))print('空调安装合同的{}。 生成'.format(data['甲方']))
封装
将以上所有**封装并一键运行,即可得到如下生成的DOCX合约文档。
import pandas as pdfrom openpyxl.utils.dataframe import dataframe_to_rowsfrom docxtpl import docxtemplatedf = pd.read_excel(r'C:用户商天强台式空调合同为高等院校。 xlsx')df["合同日期"] = df["合同日期"].apply(lambda x:x.strftime("%y-%m-%d"))datas = for row in dataframe_to_rows(df,index=false,header=false): data = datas.append(data)for data in datas: tpl = docxtemplate(r'C:用户商天强桌面承包各高校空调安装。 docx') tpl.render(data) tpl.s**e(r'C:用户上天强桌面合同生成{}的空调安装合同。 docx'.format(data['甲方']))print('空调安装合同已生成'.format(data['甲方']))
打开任何合同文档,我们看到合同数据已插入到原始下划线中。
以上就是笔者用python写了一个小脚本,可以轻松实现合同文档的批量生成,可以自己动手,解决重复的体力劳动,学习习 python办公自动化迫在眉睫。