模板标签主要来自jinja2,可以了解其语法:
http://docs.jinkan.org/docs/jinja2/templates.html
docxtpl英文手册:
https://docxtpl.readthedocs.io/en/latest/#jinja2-like-syntax
填充 Word 中的变量
- 准备模板docx文档
- Python 代码示例
from docxtpl import DocxTemplate, RichText
# 初始化模板对象
tpl = DocxTemplate("./temp.docx")
# 待填充的字典数据,其中key对应word模板中的填充名
context = {
"日期": '2021-10-01',
"作者": '张玉龙',
}
# 开始渲染context数据到模板文件中
tpl.render(context=context)
tpl.save("示例结果文档.docx")
复制
- 效果展示
填充 Word 中的表格案例一
- 准备模板docx文档
- Python 代码示例,RichText(富文本)改变文字样式
from docxtpl import DocxTemplate, RichText
# 初始化模板对象
tpl = DocxTemplate("./temp.docx")
# 待填充的字典数据,其中key对应word模板中的填充名
context = {
"table": [{"app_level": 'A类', "app": "营业", "db_name": "YY", "db_type": "PDB", "run": RichText('READ ONLY', color='FF0000', size=16, ), },
{"app_level": 'B类', "app": "账务", "db_name": "ZW", "db_type": "PDB", "run": RichText('READ WRITE', color='000000', size=16, ), },
{"app_level": 'C类', "app": "报表", "db_name": "BB", "db_type": "PDB", "run": RichText('MOUNTED', color='FF0000', size=16, ), },
{"app_level": 'D类', "app": "计费", "db_name": "JF", "db_type": "PDB", "run": RichText('READ WRITE', color='000000', size=16, ), },
],
}
# 开始渲染context数据到模板文件中
tpl.render(context=context)
tpl.save("示例结果文档.docx")
复制
- 效果展示
填充 Word 中的表格案例二
- 准备模板docx文档,loop.index 自动生成序列号
- Python 代码示例,根据给定的列表生成填充模板所需要的字典数据,代码自己学习写的,能力有限,仅做参考
from docxtpl import DocxTemplate, RichText
# 初始化模板对象
tpl = DocxTemplate("./temp.docx")
# 定义字典 context 填充渲染模板的数据
context = {}
# 巡检脚本生成的事件列表
events = [['/oracle目录使用率超过90%', '操作系统配置', '4.2', '尽快处理'],
['表空间XXX使用率超过90%', '数据库配置', '5.7', '尽快处理'],
['资源ora.scan1.vip状态为OFFLINE', '集群配置', '6.1', '尽快处理'],
['磁盘组XXX使用率超过90%', 'ASM配置', '8.1', '尽快处理'],
['存在已知比特币勒索对象', '数据库风险评估', '9.4', '尽快处理'],
['存在无效索引', '数据库对象信息', '10.2', ''],
['XXX SQL 执行效率低', '数据库性能评估', '11.2', ''],
['无RMAN物理备份', '数据库备份评估', '12.1', ''],
]
# 定义一个临时字典和列表
tmp_aa = {}
tmp_bb= []
# 待填充的字典数据,其中key对应word模板中的填充名
for event_row in events:
tmp_aa["desc"] = event_row[0]
tmp_aa["type"] = event_row[1]
tmp_aa["chap"] = event_row[2]
if event_row[3] == "尽快处理":
tmp_aa["time"] = RichText(event_row[3], color='FF0000', size=16, )
else:
tmp_aa["time"] = RichText(event_row[3], color='000000', size=16, )
tmp_bb.append(tmp_aa)
tmp_aa = {}
context["event_table"] = tmp_bb
# 开始渲染context数据到模板文件中
tpl.render(context=context)
tpl.save("示例结果文档.docx")
复制
- 效果展示
---------未完待续
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
您好,您的文章已入选合格奖,10墨值奖励已经到账请查收!
❤️我们还会实时派发您的流量收益。
3年前

评论
相关阅读
python排序sort()和sorted()区别
wzf0072
56次阅读
2025-04-09 19:57:46
AI与我共创WEB界面
布衣
48次阅读
2025-04-14 22:13:51
解决pyqt5 textbrowser控件超链接锚点问题
zayki
29次阅读
2025-04-27 16:58:59
python 实现消费者优先级队列
天翼云开发者社区
23次阅读
2025-04-25 11:08:21
优雅遍历和删除特定开头的key
陌殇流苏
21次阅读
2025-04-25 12:17:03
《深入剖析Python的生成器表达式与列表推导式:探寻代码背后的哲学与艺术》
程序员阿伟
18次阅读
2025-04-27 16:22:14
python自动更新dns A记录
godba
11次阅读
2025-04-23 11:19:04
Python运维神器:这些模块让你事半功倍
韩公子的Linux大集市
11次阅读
2025-04-09 11:13:18
python中不同数据类型转换-布尔型
周同学带您玩AI
8次阅读
2025-04-22 10:12:05
python中标识符的命名规则和命名规范
周同学带您玩AI
8次阅读
2025-04-21 10:34:44
TA的专栏
目录