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



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

有没有办法在保留docx模板格式的同时生成多个录取通知书(输出文件名_.docx(?

使用Stackoverflow的帮助,我能够利用python-docx包并生成多封录取通知书。因此,这种方法会从录取通知书中删除所有格式。

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'))
Output:
[{"offer_letter_date":"July 27, 2019","candidate_name":"John Wick","candidate_email":"john.wick@gmail.com","candidate_location":"NYC","candidate_job_title":"Business Development Executive","candidate_ctc":283000},{"offer_letter_date":"July 17, 2019","candidate_name":"Jane Doe","candidate_email":"jane.doe@gmail.com","candidate_location":"NYC","candidate_job_title":"Business Development Executive","candidate_ctc":290000}]
context = df.to_json(orient='records')
doc.render(context)

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

用于单词模板的Jinja2真的很有帮助,但我无法通过循环复制它。

可以创建多个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]))

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

最新更新