亲测,找到了适用自己的方法
我涉及的功能部分是:根据给定excel合同字段,填充到合同模板word中
excel
word
具体操作
1.安装库
pip install docxtpl
pip install pandas
2.代码
第一种方法
import pandas as pd
from docxtpl import DocxTemplate #一些需要事先引入的库
df = pd.read_excel("E:\\YX\\2023\\12月\\培训服务期协议自动录入\\服务期协议名单-试验.xlsx",sheet_name="Sheet1")
#读取excel内容
datas=df.loc[:,['乙方','身份证号码',"参培日期",'参培项目',"参培角色","培训费用","服务年限(年)","服务年限(月)"]]
#设置数据表表头
doc = DocxTemplate("E:\\YX\\2023\\12月\\培训服务期协议自动录入\\附件1:培训服务期协议模板 - 副本3.docx")
#对要操作的docx文档进行初始化
print(datas)
#打印数据表
for index,data in datas.iterrows():
print(data)
player = data['乙方']
cradID = data["身份证号码"]
times = data["参培日期"]
project = data["参培项目"]
role = data["参培角色"]
fee = data["培训费用"]
year = data["服务年限(年)"]
month = data["服务年限(月)"]
context = {'player': player,
'cradID': cradID,
"times": times,
"project": project,
"role" : role,
"fee":fee,
'year': year,
'month': month}
# company_name 是存在于1.docx文档里面的变量,就像这样{{company_name}},直接放在1.docx文件的明确位置就行
doc.render(context)
#这里是有jinjia2的模板语言进行变量的替换,然后便可以在.docx文档里面看到{{}}变成了context
doc.save("E:\\YX\\2023\\12月\\培训服务期协议自动录入\\附件1:培训服务期协议模板111111.docx")
# 保存
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿
第二种方法
import os
from docxtpl import DocxTemplate
import pandas as pd
from openpyxl.utils.dataframe import dataframe_to_rows
#读取数据表
df = pd.read_excel("E:\\YX\\2023\\12月\\培训服务期协议自动录入\\服务期协议名单-试验.xlsx")
datas = []
for row in dataframe_to_rows(df,index=False,header=False):
data = {
"乙方": row[1],
"培训费用": row[7],
"参培项目": row[5],
"身份证号码": row[3],
"参培角色": row[6],
"参培日期": row[4],
"服务年限(年)": row[8],
"服务年限(月)": row[9]}
datas.append(data)
datas
#判断文件存在不存在
file_path = "E:\\YX\\2023\\12月\\培训服务期协议自动录入\\附件1:培训服务期协议模板.docx"
if os.path.exists(file_path):
print("文件或路径存在")
else:
print("文件或路径不存在")
print(datas)
#遍历渲染
for data in datas:
print(data)
tpl = DocxTemplate('E:\\YX\\2023\\12月\\培训服务期协议自动录入\\附件1:培训服务期协议模板 - 副本3.docx')
print(tpl)
tpl.render(data)
tpl.save(f'E:\\YX\\2023\\12月\\培训服务期协议自动录入\\附件1:培训服务期协议模板111111.docx')
以上仅供参考
哎呀 真的是
累死老娘了啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊