我正在研究一个自动为候选人生成录取通知书的过程。候选人信息在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]))
^可能需要一些修改,但你明白了。