如何使用python的docxtpl包生成多个docx文件,从而保留docx格式?

2024-05-16 10:39:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在研究一个过程,以自动生成录取通知书的候选人。候选人信息在Excel中,包含生成录用信所需的标准信息,如候选人姓名、加入日期、地点、职务、CTC等

有没有一种方法可以在保留docx模板格式的同时生成多个offer letter(输出文件名为\uux)?在

在Stackoverflow的帮助下,我能够利用pythondocx包并生成多个报价信。然而,这种方法会将报价函中的所有格式去掉。在

import os
from pandas import *
import datetime
from docxtpl import DocxTemplate

doc = DocxTemplate("\\template\\offer_letter_template.docx")
xls = ExcelFile("\\data\\candidate_data.xlsx")
df = xls.parse(xls.sheet_names[0])
print (df.to_json(orient='records'))
^{pr2}$
context = df.to_json(orient='records')
doc.render(context)

我正在努力创建一个围绕context的循环,以便候选信息保存在各自的文件中,而不是保存在一个文件中。有人能帮忙吗?在

Jinja2 for word templating非常有用,但我不能用循环来复制它。在


Tags: 方法fromimport信息dfdoc格式context
1条回答
网友
1楼 · 发布于 2024-05-16 10:39:30

创建多个docx文件是可能的,不幸的是,docxtpl文档中没有人说一旦加载模板,替换就完成了,从而阻止了任何进一步的上下文替换。在

您可能希望在每次迭代时重新打开文件。在

比如:

context=df.to_json(orient='records')
for i in len(context):
    doc = DocxTemplate("\\template\\offer_letter_template.docx")
    template.render(context[i])
    template.save("docs-folder\\%s%(context[i][candidate_name]))

^可能需要修改一下,但你明白了。在

相关问题 更多 >