我正在努力自动生成候选人的录取通知书。候选人信息在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":"[email protected]","candidate_location":"NYC","candidate_job_title":"Business Development Executive","candidate_ctc":283000},{"offer_letter_date":"July 17, 2019","candidate_name":"Jane Doe","candidate_email":"[email protected]","candidate_location":"NYC","candidate_job_title":"Business Development Executive","candidate_ctc":290000}]
context = df.to_json(orient='records')
doc.render(context)
我正在努力围绕context
创建一个循环,以便将候选信息保存在各个文件中,而不是一个文件本身。有人可以帮忙吗?
Jinja2 for word templating确实很有帮助,但我无法通过循环复制它。
可以创建多个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]))
^可能需要修改,但是您明白了。