python-docx-template实现docx模板编程

news2024/11/10 13:43:41

1、python-docx-template简介

        python-docx库来创建word文档,但是对于文档的修改功能并不灵活。python-docx-template 模块主要依赖两个库, python-docx用于读取,编写和创建子文档 , jinja2用于管理插入到模板docx中的标签 。 其基本思路是利用jinja2制作Word模板,并动态向模板中插入文字、图片、表格等内容。

pip install docxtpl

文档:

        1)https://docxtpl.readthedocs.io/en/latest/

        2)https://pypi.org/project/docxtpl/

        3)https://github.com/elapouya/python-docx-template

2、文档的打开、数据渲染、关闭

docx 模板:

这是一个模板:{{template}}
这是一个Word文件

执行代码:

from docxtpl import DocxTemplate

tpl = DocxTemplate('test.docx') # 打开docx文件

# 要装入的数据信息
context = {
    'template': 'Hello World!'
}
tpl.render(context) # 填充数据
tpl.save('test1.docx') # 保存文件操作

结果:

这是一个模板:Hello World!
这是一个Word文件

3、嵌入图片

        可以动态地将一个或多个图像添加到文档中。只需 {{ xxx }} 在模板中添加标记。指定模板对象,图像文件路径以及可选的宽度和/或高度。对于高度和宽度,必须使用毫米(Mm),英寸(Inches)或点(Pt)类。

docx 模板:

插入一个图片:{{ myimage }}

执行代码:

from docxtpl import InlineImage, DocxTemplate
from docx.shared import Mm
import jinja2

# 打开docx文件
tpl = DocxTemplate('test.docx')

# 要装入的数据信息
context = {
    'template': 'Hello World!',
    'myimage': InlineImage(tpl, 'happy.jpg', width=Mm(20)),
}

jinja_env = jinja2.Environment(autoescape=True)

# 填充数据
tpl.render(context, jinja_env)

# 保存文件操作
tpl.save('test_temp.docx')

结果:

4、docxtpl的Jinja2专属标签

        docxtpl的类语法包含%p,%tr,%tc,%r。

{%p jinja2_tag %} for paragraphs 段落,对应docx.text.paragraph.Paragraph对象
{%tr jinja2_tag %} for table rows 表格中的一行,对应docx.table._Row对象
{%tc jinja2_tag %} for table columns 表格中的一列,对应docx.table._Column对象
{%r jinja2_tag %} for runs 段落中的一个片段,对应docx.text.run.Run对象

        PS:这四种标签,起始标签不能在同一行,必须在不同的行上面,否则无法正确渲染。

{%p if display_paragraph %}
    Here is my paragraph
{%p endif %}

表格处理与合并单元格:

1)水平合并单元格

        在for循环中要合并的单元格内容前面补充:

{% hm %}

2、垂直合并单元格

        在for循环中要合并的单元格内容前面补充:

{% vm %}

参考文章:

1、【python】利用docxtpl和Jinja2生成基于模板的Word文档

【python】利用docxtpl和Jinja2生成基于模板的Word文档-腾讯云开发者社区-腾讯云

2、快速生成定制化的Word文档:Python实践指南(插入柱状图、饼状图)

https://zhuanlan.zhihu.com/p/629766157

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1994853.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

90天SSL证书时代来临的应对策略-SSL证书自动化运维

SSL证书有效期长期以来都是网络安全专业人士关注的重点,尤其是去年3月Google在CA/B论坛投票提案中提议将SSL证书的有效期限制在90天之后,毕竟这对高度依赖手动管理证书的企业影响巨大。本文将概述对证书有效期缩短的理解以及应对策略。 90天是最终的有效…

Opencv-绘制几何图形

1. 绘制圆形 1.1 circle()函数原型 void cv::circle(InputOutputArray img, Point center, int radius, const Scalar & color, int thickness 1, int lineType LINE_8, int shift 0 ) img:需要绘制圆形的图像。 center:圆形的圆心位置坐标。 …

Python中的 `continue` 语句:掌握循环控制的艺术

Python中的 continue 语句:掌握循环控制的艺术 下滑即可查看博客内容 🌈 欢迎莅临我的个人主页 👈这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地!🎇 🎓 博主简介:985高校的普通…

国产数据库备份恢复实现

数据库备份恢复是数据库高可用的基本能力,如何通过备份数据快速高效的恢复业务并且满足不同场景下的恢复需求,是各数据库厂商需要关注的要点。本文将介绍几种国产数据库的备份恢复功能,以加深了解。 1、数据库备份恢复方案 数据库备份是生产…

为什么选择在Facebook投放广告?

2024年了你还没对 Facebook 广告产生兴趣?那你可就亏大了! 今天这篇文章,我们会分享它对你扩大业务的好处。要知道,Facebook 广告凭借它庞大的用户群和先进的定位选项,已经是企业主们有效接触目标受众的必备神器。接下…

<数据集>固定视角监控牧场绵羊识别数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:3615张 标注数量(xml文件个数):3615 标注数量(txt文件个数):3615 标注类别数:1 标注类别名称:[Sheep] 序号类别名称图片数框数1Sheep361529632 使用标注工具&#…

leetcode26_删除有序数组中的重复项

思路 双指针 func removeDuplicates(nums []int) int {if len(nums) < 2 {return len(nums)}// 双指针//区间 [0, slow] 代表已遍历且不重复元素//区间 [fast,len(nums)) 代表还未遍历的元素slow, fast : 0,1for ;fast < len(nums);{if nums[slow] ! nums[fast] {slown…

DICT运维服务目录

1、CT类项目或交付物的运维工作由网络条线负责,相关工作的SLA、流程、职责划分等按网络条线的相关制度执行 2、本服务目录主要面向IT部分的运维工作IT模式分类一级服务名称二级服务名称服务内容服务目标服务指标服务指标目标值建议工作结果呈现基础运维包增值服务指标参考费用…

【Qt】多种控件实现“hello world“

使用编辑框的方式实现"hello wordl" 使用编辑框实现"hello world"的方式有俩种&#xff1a; 单行编辑框&#xff1a;LineEdit多行编辑框&#xff1a;TextEdit 图形化界面 纯代码方式 代码展示&#xff1a; #include "widget.h" #include &qu…

Domcomp:省心好用的国外域名比价网站

先简单播报下今日奥运热点&#xff1a;1、金牌榜&#xff1a;中国29枚暂列第二&#xff1b;2、赛事预告&#xff1a;21&#xff1a;00央视5套乒乓男团决赛。言归正传&#xff0c;话说域名注册商Dynadot和NameSilo虽性价比较高&#xff0c;但也不能说域名价格每时每刻都是最低的…

RT-Thread 操作系统 之 线程间同步 IO设备模型

RT-Thread 操作系统 之 线程间同步 IO设备模型 一、线程间同步1.1、信号量1.1.1、信号量结构体1.1.2、信号量的使用和管理1.1.3、信号量同步例程 1.2、互斥量1.2.1、互斥量的使用和管理 1.3、事件集1.3.1、事件集使用和管理方法1.3.2、事件集三个线程同步实例 二、IO设备模型2.…

云手机在海外社交媒体运营中的作用

随着社交媒体的全球普及&#xff0c;海外社交媒体运营成为众多企业与个人提升品牌影响力和扩大市场份额的重要策略。在这一进程中&#xff0c;海外云手机以其独特的功能&#xff0c;为海外社交媒体运营提供了强大的支持。 那么&#xff0c;海外云手机在海外社交媒体运营中究竟扮…

UCOSIII的任务管理详解

前言 对于操作系统而言&#xff0c;最重要的就是任务的创建、挂起、删除和调度等&#xff0c;简单的创建任务可能大家都会&#xff0c;但是做大型项目的话&#xff0c;任务多了就可能需要对UCOSIII的任务管理做更深层次的一些理解。 一、任务状态 UCOSIII是单核系统&#xff…

【网络】协议,OSI参考模型,局域网通信,跨网络通信

1.协议 1.1.什么是协议/协议的由来&#xff1f; 这个就要回到我们说的阿帕网了&#xff01;&#xff01; 在阿帕网&#xff08;ARPA&#xff09;产生运作之初&#xff0c;通过接口信号处理机实现互联的电脑并不多&#xff0c;大部分电脑相互之间不兼容。 在一台电脑上完成的工…

贪心/前后缀优化dp,CF 575F - Bulbo

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 575F - Bulbo 二、解题报告 1、思路分析 F1 前后缀分离优化dp 点 的值域很大&#xff0c;但是线段数目很少&#xff0c;只有5000量级 也就是说最多有10000 个 不同的点 我们将所有点从小到大排序得到点集…

【python】OpenCV—Greedy Snake

文章目录 1、代码实现2、涉及到的库——cv2.setWindowProperty 1、代码实现 import cv2 import numpy as np from random import choiceclass SnakePart:def __init__(self, front, x, y):self.front frontself.x xself.y ydef move(self):# 跟随它前面的部分移动self.x s…

数据结构:链表经典算法OJ题

目录 前言 一、移除链表元素 二、反转链表 三、合并两个有序链表 四、链表的中间节点 五、环形链表的约瑟夫问题 前言 在了解了链表的相关知识后&#xff0c;我们还需要一些题目进行练习加深对链表这方面知识的理解&#xff0c;也可以用来检测链表这块学的的怎么样&#…

【手撕数据结构】二叉树和堆

目录 树的概念树的相关概念二叉树二叉树的概念满二叉树和完全二叉树 堆的概念与结构堆的向上调整算法思路分析代码详细解说 堆的向下调整算法算法图解分析代码详解分析 堆的各个接口堆的定义及声明堆的初始化堆的销毁堆的插入堆的删除取堆顶数据堆的数据个数堆的判空 树的概念 …

【CVE-2024-38077】核弹级Windows RCE漏洞如何自检并修复该漏洞(附批量漏洞检测工具及分析伪代码)

代码详细分析点击此处 # 伪代码分析链接 工具为官方工具&#xff0c;师傅可自行测试 深信服CVE-2024-38077漏洞扫描工具.exe Algorithm : SHA1Hash : 85ECBDB053950A20B9748E867586D059AAA19115Algorithm : SHA256Hash : 1BF3A372F95C4F5B2D776C6ABB1E9BCA51933C3…

机器学习·L3W2-协同过滤

推荐算法 推荐算法可以预测用户评分&#xff0c;并根据评分推荐数据 推荐算法与其他预测算法的区别在于&#xff1a;推荐算法中的数据大多都不完整&#xff0c;用户只对几个电影评分&#xff1b;而预测算法则要求数据完整&#xff0c;便于拟合和预测 协同过滤 评分矩阵Y&#x…