一 docxtpl

docxtpl 一个很强大的包,其主要通过对docx文档模板加载,从而对其进行修改。
主要依赖两个包

  • python-docx :读写doc文本
  • jinja2:管理插入到模板中的标签

安装

pip install docxtpl

基本使用示例:
from docxtpl import DocxTemplate
doc = DocxTemplate("my_word_template.docx")
context = { 'company_name' : "World company" }
doc.render(context)
doc.save("generated_doc.docx")

导言

python-docx-template被开发出来,是因为python-docx的强大在于创建文档,而不是修改它们。

这个想法是开始于创建一个需要用MicrosoftWord生成的文档的示例,它可以像我们想要的那样复杂:如图片、索引表、页脚、页眉、变量,以及我们可以用Word做的任何事情。然后,当我们使用MicrosoftWord编辑文档时,直接在文档中插入类似于Jinja 2的标记。将文档保存为.docx文件(XML格式):它将是.docx模板文件。

现在,我们可以使用python-docx-template从这个.docx模板和将关联的上下文变量生成您想要的多个Word文档。

注意:python-docx-template是测试的是MS Word 97格式,它可能不适用于其他版本.

Jinja 2类语法

因Jinja 2包被使用,可以使用Word文档中的所有Jinja 2标记和过滤器。然而,要使它在Word文档中工作,进行了些限制和扩展:

限制

通常的Jinja 2标签,只能在同一个段落的同一个‘’run’中使用,它不能跨几个段落使用,表行、‘run’。如果您想要管理段落、表行和整个‘run’的样式,您必须使用特殊的标记语法,如下一章所述。

注意

MicrosoftWord的“Run”是一个具有相同风格的字符序列。例如,如果您创建一个具有相同风格的所有字符的段落:Word将在内部创建一个段落中的“Run”。现在,如果你在这段中间加了一个粗体,单词会把前面的“Run”转换成3‘Run’(普通-粗体-正常)。

Jinja 2类语法示范

变量

{{ var_name }}

控制语句

循环
{% for … in … %}
判断
{%if … %}

python word修改神器docxtpl相关推荐

  1. Python动态修改Word文档内容,保留格式样式,并批量生成PDF

    Python动态修改Word文档内容,保留格式样式,并批量生成PDF 前言 一.需要安装的库 二.核心逻辑-替换 前言 假如你有一个Word模版文档,要在里面填写人员信息,但人员有成百上千个,手动填起 ...

  2. 九大神招,让Python里数据分析神器Jupyter,完美升华

    九大神招,让Python里数据分析神器Jupyter,完美升华 Notebook作为一款经典的交互式编辑器,在视图数据等实时展示方面有其特有的优势,但是相比pycharm.sublime等编辑工具,J ...

  3. python 操作excel神器_【转】多图+代码 | 详解Python操作Excel神器openpyxl的各种操作!...

    转自:https://blog.csdn.net/weixin_41846769/article/details/108273349 前言 大家好,在之前的十几篇办公自动化系列文章中,我们大多是以真实 ...

  4. python每行输出8个式子_多图+代码 | 详解Python操作Excel神器openpyxl的各种操作!

    前言 大家好,在之前的十几篇办公自动化系列文章中,我们大多是以真实的案例需求来讲解Python如何进行自动化办公操作,并且多次使用到openpyxl来处理表格,今天我们就来详细的盘点Python操作E ...

  5. doc python 字体颜色,Python docx修改文字大小字体类型 Python-docx 实现整体修改或者部分修改文字的大小和字体类型...

    想了解Python-docx 实现整体修改或者部分修改文字的大小和字体类型的相关内容吗,Leeoo_lyq在本文为您仔细讲解Python docx修改文字大小字体类型的相关知识和一些Code实例,欢迎 ...

  6. python批量化修改文件名字(带窗口,可调整设置)

    python批量化修改文件名字(带窗口,可调整设置) 功能描述 注意事项 效果图 源代码 功能描述 主要有以下几个 1.直接修改文件名字,并在名字后面添加数字进行排序. 2.在文件名字前面增加前缀. ...

  7. python word排版_使用Python通过win32 COM实现Word文档的写入与保存方法

    通过win32 COM接口实现软件的操作本质上来看跟直接操作软件一致,这跟我之前经常用的通过各种扩展的组件或者库实现各种文件的处理有较大的差异.如果有过Windows下使用Word的经历,那么使用wi ...

  8. python写错了怎么更改-Python中修改字符串的四种方法

    在Python中,字符串是不可变类型,即无法直接修改字符串的某一位字符. 因此改变一个字符串的元素需要新建一个新的字符串. 常见的修改方法有以下4种. 方法1:将字符串转换成列表后修改值,然后用joi ...

  9. python 修改文件名_【学习分享】利用python批量修改文件名

    1 前言 分享一个利用python批量修改文件名的方法,我们以前分享过用DOS命令来批量修改文件名,但是如果要修改多个文件夹内的文件名,用DOS命令就不好处理了,我们就来分享一下如何用python处理 ...

最新文章

  1. 清华刘洋:论文写作,信息为表,逻辑为骨,思想为心
  2. 「THUPC2018」赛艇 / Citing
  3. 成功解决ImportError: cannot import name 'pywrap_tensorflow'
  4. linux 批量kill java进程
  5. 迷你linux设备,ComputeLab发布MintBox迷你PC:专为Linux系统玩家打造
  6. 在Solaris系统下如何更改网络配置?
  7. ssas从mysql获取数据库_通过AMO获取SQL Server SSAS信息
  8. 数据库索引的使用及优化
  9. HDU2002 计算球体积【入门】
  10. .Net程序猿玩转Android开发---(11)页面跳转
  11. http-server基本使用
  12. 我看韩寒-话题2010读后
  13. 余世维有效沟通全文字!
  14. 「大话webpack」从零搭建
  15. Android okhttp3设置代理(http/https)
  16. CentOS下配置apache虚拟主机
  17. Cascade Classification
  18. C++学习需要看的书籍
  19. 核高基是什么意思 为什么要搞核高基 核高基与我们有啥关系
  20. 接触式IC卡 - STM32(Smart Card)

热门文章

  1. iOS屏幕自动旋转 以及横屏模式打开APP出现的问题
  2. 西瓜书学习笔记第2章(模型评估与选择)
  3. 使用 Wall 搭建个人照片墙和视频墙
  4. Android——实现m3u8视频缓存
  5. url资源(html相关)
  6. 求多个数的最小公倍数或最大公约数
  7. 基于51单片机万年历
  8. 多点相册--将手机的照片和视频备份到电脑的工具
  9. 挂载NTFS分区的两种方法
  10. php窗帘excel,各种办公室窗帘的用途及优缺点 办公窗帘安装讲