【python渲染word模板的几种方式】

亲测,找到了适用自己的方法

在这里插入图片描述

我涉及的功能部分是:根据给定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')
   

以上仅供参考
哎呀 真的是
累死老娘了啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值