生成請假條
1.準備一個文件“template.docx”,內容如下。
?2.安裝docxtpl庫。
pip install docxtpl
?3.執行代碼,替換字典內容。
from docxtpl import DocxTemplate# 讀取定義模板文件
tpl = DocxTemplate('template.docx')
# 創建子文檔
sd = tpl.new_subdoc()
# 添加段落
p = sd.add_paragraph('本人身體不適需就醫,懇請老師予以批準!給您帶來的不便,敬請諒解。')
# 創建上下文
context = {'name': '張三','my_name': '李四','date': '2025年7月22日','content': sd}
# 渲染模板
tpl.render(context)
# 保存文件
tpl.save('output.docx')
4.生成結果如下所示。?
?批量生成錄取通知書
1.準備Word模板和Excel表格數據(下述數據為代碼隨機生成,假設全部是湖南省內的院校)。
universities.xlsx
notification_template.docx (假設錄取通知書格式是這樣的,省略了一些東西)
?2.執行代碼,核心就是將Excel中的數據替換到Word模板中。
import pandas as pd
from docxtpl import DocxTemplate
import random# 讀取Excel數據
df = pd.read_excel('universities.xlsx')
# print(df)
# Word生成模板
tpl = DocxTemplate('notification_template.docx')
# 數據處理
for i in range(len(df)):# 獲取數據,單個學生信息(轉成字典)data = df.loc[i].to_dict()# 假設開學時間在10號到25號中間number = random.randint(10, 25)# 日期date = '2025年9月' + str(number) + '日'# 創建上下文context = {**data, # 字典解包'開學時間': date}# print(context)# 渲染模板tpl.render(context)# 需要提前創建output文件夾tpl.save(f'output/{context["姓名"]}_錄取通知書.docx')
3.在output文件夾中看結果。
4.隨便打開一個生成的Word。
?生成Word表格
1.Excel采用之前的universities.xlsx表格,word模板錄取存檔_template.docx如下所示。
生成表頭?
{%tc for col in col_lables %} {{col}} {%tc endfor %}
?生成表格內容
{%tr for item in tbl_contents %}
{%tc for col in item.values()%} {{col}} {%tc endfor%}
{%tr endfor %}
2.執行代碼
import pandas as pd
from docxtpl import DocxTemplate# 讀取Excel數據
df = pd.read_excel('universities.xlsx')
# print(df)
tpl=DocxTemplate('錄取存檔_template.docx')
# 將數據轉為字典(每條數據是一個字典
data=df.to_dict(orient='records')
context={'col_lables':[*df.columns],'tbl_contents':data
}tpl.render(context)
tpl.save('錄取存檔.docx')
?3.結果如圖所示。