当前位置: 首页 > 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.lryc.cn/news/595664.html

相关文章:

  • 滴滴0722 总结与优化方向
  • J2EE模式---前端控制器模式
  • es6中的symbol基础知识
  • Element Plus Table 组件扩展:表尾合计功能详解
  • UE5 UI ScrollBox 滚动框
  • .NET使用EPPlus导出EXCEL的接口中,文件流缺少文件名信息
  • 归并排序(Merge Sort)(递归写法)
  • 【前端】ikun-pptx编辑器前瞻问题一: pptx的xml样式, 使用html能100%还原么
  • vscode目录,右键菜单加入用VSCode打开文件和文件夹(快速解决)(含删除)(脚本)
  • 基于 KeepAlived + HAProxy 搭建 RabbitMQ 高可用负载均衡集群
  • 医院信息系统(HIS)切换实施方案与管理技术分析
  • Linux中信号认识及处理和硬件中断与软中断的讲解
  • 基于 Spring Batch 和 XXL-Job 的批处理任务实现
  • iOS加固工具有哪些?从零源码到深度混淆的全景解读
  • iOS 抓包工具有哪些?场景导向下的工具推荐与实战对比
  • 微软徽标认证是什么?如何快速获取驱动签名?
  • haproxy七层代理新手入门详解
  • 字体识别实战:用Python打造智能字体侦探工具
  • 查看 iOS iPhone 设备上 App 和系统运行时的实时日志与崩溃日志
  • 一文速通《线性方程组》
  • ipynb断点不停 ipynb调试相关
  • 项目集成zustand后,如何构建和使用,以及devtools函数。
  • 报错error:0308010C:digital envelope routines::unsupported解决方案
  • 网络原理 HTTP 和 HTTPS
  • 【3GPP】5G专用词汇1
  • 开源AI智能客服、AI智能名片与S2B2C商城小程序在客户复购与转介绍中的协同效应研究
  • 智联智造:国内新能源汽车品牌AGV小车无线控制系统创新实践
  • 《C++初阶之STL》【string类:详解 + 实现】
  • python办自动化--读取邮箱中特定的邮件,并下载特定的附件
  • 在Android开发中,如何获取到手机设备的PIN码?