python批量生成excel文件,python批量制作合同
Python在办公自动化方面有很大的优势,可以解决我们工作中很多重复性的问题。本文将Python读取Excel数据实现批量合同生成,可供参考。
一.背景二。准备三。实战1。相关库的安装。读取合同数据3。批量合同代发大家好,我是j哥。
在我们的工作中,我们面临着大量的重复性工作,这些工作往往费时、费力且容易出错。Python在办公自动化方面有很大的优势,可以解决我们工作中很多重复性的问题,分分钟解决办公需求。
目录
在我们的经济往来中,我们有时会涉及大量生产销售合同。比如我们需要根据下面的合同数据(Excel)批量生成销售合同(Word)。
一、背景
首先我们要准备一个合同模板(Word),用{{}}表示要替换的合同数据,如下:
二、准备
三、实战
Openpyxl是一个非常好用的操作Excel的库,功能比xlrd和xlwt都要齐全。让我们先安装它:
pipinstallopenpyxl
Docxtpl是一个非常好用的操作Word的库,主要是通过加载来修改docx文档模板。我们还安装了这个库。
pipinstalldocxtpl
1.安装相关库
我们可以通过load_workbook方法打开合同数据(Excel表),然后读取每个合同数据并存储在数据字典中,再将每个字典放入列表数据中。PS:由于已读签约日期是时间戳,需要用strftime方法转换成标准的年、月、日格式。
fromdocxtplimportDocxTemplate
fromopenpyxlimportload _ workbook
WB=load _ workbook( contract data . xlsx )
ws=wb[Sheet1]
数据=[]
forrowinrange(2,ws.max_row):
name1=ws[fA{row}]。价值
name2=ws[fB{row}]。价值
price=ws[fC{row}]。价值
product=ws[fD{row}]。价值
count=ws[fE{row}]。价值
deadline=ws[fF{row}]。价值
time=ws[fG{row}]。价值
time=time.strftime(%Y-%m-%d )
Data={ 甲方 :name1,
乙方 :姓名2,
合同价格 :价格:
产品名称 :产品,
产品数量 :计数,
付款方式 :热线:
签名时间 :time}
datas.append(数据)
数据
当然,我们也可以通过熊猫解决方案读取合同数据,主要是利用dataframe_to_rows方法将熊猫格式的数据逐行转换成数据。Index=False表示不需要索引,header=False表示不需要头。
importpandasaspd
from openpyxl . utils . dataframeimportdataframe _ to _ rows
Df=pd.read_excel(合同数据. xlsx )
Df[签署日期]=df[签署日期]。apply(lambda x 3360 x . strftime( % y-% m-% d ))
数据=[]
forrowindataframe_to_rows(df,index=False,h
eader=False):
data = {"甲方": row[0],
"乙方": row[1],
"合同价款": row[2],
"产品名称": row[3],
"产品数量": row[4],
"付款期限": row[5],
"签约时间": row[6]}
datas.append(data)
datas
我们可以打印datas,效果如下:
[{甲方: J哥,乙方: 老王,
合同价款: 1000000,
产品名称: 菜J学Python,
产品数量: 1,
付款期限: 30,
签约时间: 2022-05-20},
{甲方: K哥,
乙方: 张三,
合同价款: 20000,
产品名称: 冰箱,
产品数量: 2,
付款期限: 40,
签约时间: 2022-05-21},
{甲方: C哥,
乙方: 李四,
合同价款: 30000,
产品名称: 电脑,
产品数量: 3,
付款期限: 50,
签约时间: 2022-05-22},
{甲方: B哥,
乙方: 王五,
合同价款: 40000,
产品名称: 洗衣机,
产品数量: 4,
付款期限: 60,
签约时间: 2022-05-23},
{甲方: P哥,
乙方: 赵六,
合同价款: 50000,
产品名称: 微波炉,
产品数量: 5,
付款期限: 70,
签约时间: 2022-05-24}]
3.批量合同生成
这里运用for语句遍历每一个合同数据data(字典格式),打开合同模板,并将data替换掉合同模板中的数据,然后保存为新的销售合同。
for data in datas:tpl = DocxTemplate(合同模板.docx)
tpl.render(data)
tpl.save(f合同生成/{data["甲方"]}的销售合同{data["签约时间"]}.docx)
print(f{data["甲方"]}的销售合同已生成)
代码运行后,效果如下:
打开其中一个销售合同,效果如下:
到此这篇关于Python读取Excel数据实现批量生成合同的文章就介绍到这了,更多相关Python生成合同内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。