当前位置: 首页 > news >正文

在Python中操作Word

生成请假条

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.结果如图所示。

http://www.dtcms.com/a/292746.html

相关文章:

  • 嵌入式学习-土堆目标检测(3)-day27
  • Python 综合运用:MD 转 DOCX 工具
  • 上网行为管理知识
  • 054_TreeMap / LinkedHashMap
  • 小程序上传头像解析
  • numpy库 降维,矩阵创建与元素的选取,修改
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘Cython’问题
  • Protobuf学习
  • SDC命令详解:使用set_min_library命令进行约束
  • fuse低代码工作流平台概述【已开源】-自研
  • AWS: 云上侦探手册,七步排查ALB与EC2连接疑云
  • Kotlin调试
  • PyQt5在Pycharm上的环境搭建 -- Qt Designer + Pyuic + Pyrcc组合,大幅提升GUI开发效率
  • 测试学习之——requests day01
  • 【数据结构初阶】--栈和队列(一)
  • 注意力机制介绍
  • 从链式协同到生态共生:制造业数智化供应链跃升之路
  • spring boot 项目如何使用jasypt加密
  • 【中文翻译】SmolVLA:面向低成本高效机器人的视觉-语言-动作模型
  • 认识自我的机器人:麻省理工学院基于视觉的系统让机器了解自身机体
  • 机器人芯片(腾讯元宝)
  • 《小白学习产品经理》第八章:方法论之马斯洛需求层次理论
  • 【JS】获取元素宽高(例如div)
  • 暑假算法训练.6
  • 单片机学习笔记.单总线one-wire协议(这里以普中开发板DS18B20为例)
  • SQL JOIN 全解析:用 `users` 与 `orders` 表彻底掌握内连接、左连接、右连接
  • PostgreSQL大数据集查询优化
  • 蓝桥杯51单片机
  • 第十四届蓝桥杯青少Scratch国赛真题——太空大战
  • 解决 NCCL 多节点通信问题:从 nranks 1 到 busbw 116 MB/s