关于python操作docx格式文档,我用到了两个python包,一个便是python-docx包,另一个便是python-docx-template;,同时我也用到了很出名的一个工具"pandoc,下面我会对他们各自进行介绍。

首先便是python-docx包,这是一个很强大的包,可以用来创建docx文档,包含段落、分页符、表格、图片、标题、样式等几乎所有的word文档中能常用的功能都包含了,这个包的主要功能便是用来创建文档,相对来说用来修改功能不是很强大,关于文档请查看他的"官网;

再然后便是python-docx-template这个包了,他可以用来对docx文档进行修改,诸如对文档中的 文本、图片、富文本、等几乎所有存在与文档中的他都能替换,而且他操作起来就如同很多web框架中的模板语言一样,因为他是和jinjia2模板语言结合使用的,所以最好希望使用之前对模板语言有一定了解;

关于pandoc,这个包在许多需要进行文本转换的地方用处很强大,他可以把许多如今存在的文档格式转换问另一种文档格式,如html、markdown、docbook、latex、docx等转换为xml、latex、markdown、pdf,总之很强大,这是官网,有兴趣的可以去了解下。

下面便会相应介绍他们各自的大概的用法。还是按照上面的顺序进行介绍,

关于python-docx这个包我觉得最好还是引用他官网的一段代码解释最为合适了,因为这里面基本情况都被包含了,

from docx import Document

from docx.shared import Inches

document = Document() # 首先这是包的主要接口,这应该是利用的设计模式的一种,用来创建docx文档,里面也可以包含文档路径(d:\\2.docx)

document.add_heading('Document Title', 0) # 这里是给文档添加一个标题,0表示 样式为title,1则为忽略,其他则是Heading{level},具体可以去官网查;

p = document.add_paragraph('A plain paragraph having some ') # 这里是添加一个段落

p.add_run('bold').bold = True # 这里是在这个段落p里文字some后面添加bold字符

p.add_run(' and some ')

p.add_run('italic.').italic = True

document.add_heading('Heading, level 1', level=1) # 这里是添加标题1

document.add_paragraph('Intense quote', style='IntenseQuote') # 这里是添加段落,style后面则是样式

document.add_paragraph(

'first item in unordered list', style='ListBullet' # 添加段落,样式为unordered list类型

)

document.add_paragraph(

'first item in ordered list', style='ListNumber' # 添加段落,样式为ordered list数字类型

)

document.add_picture('monty-truth.png', width=Inches(1.25)) # 添加图片

table = document.add_table(rows=1, cols=3) # 添加一个表格,每行三列

hdr_cells = table.rows[0].cells # 表格第一行的所含有的所有列数

hdr_cells[0].text = 'Qty' # 第一行的第一列,给这行里面添加文字

hdr_cells[1].text = 'Id'

hdr_cells[2].text = 'Desc'

for item in recordset:

row_cells = table.add_row().cells # 这是在这个表格第一行 (称作最后一行更好) 下面再添加新的一行

row_cells[0].text = str(item.qty)

row_cells[1].text = str(item.id)

row_cells[2].text = item.desc

document.add_page_break() # 添加分页符

document.save('demo.docx') # 保存这个文档

具体样式请看:

关于更多细节希望大家还是去他的官网python-docx;看,介绍的还是很详细

然后便是python-docx-template包了,他用起来就向python中的模板语言一样,有上下文,有模板,然后进行变量的替换

关于python-docx-template,他的官网名称便是“像jinjia2一样来操作docx文档”,因此这个包对于用来进行文档修改时很强大的下面是一个简单例子:

from docxtpl import DocxTemplate

doc = DocxTemplate("1.docx") # 对要操作的docx文档进行初始化

context = { 'company_name' : "World company" } # company_name 是存在于1.docx文档里面的变量,就像这样{{company_name}},直接放在1.docx文件的明确位置就行

doc.render(context) # 这里是有jinjia2的模板语言进行变量的替换,然后便可以在1.docx文档里面看到{{company_name}}变成了World company

doc.save("generated_doc.docx") # 保存

当然,这个包的功能远远不止上面例子中的一些,可以包含图片

myimage = InlineImage(doc,'test_files/python_logo.png',width=Mm(20)) # tpl便是上面例子中的doc对象

也可以包含另一个docx文档,

sub = doc.new_subdoc()

sub.subdocx = Document('d:\\2.docx')

doc.render({'sub': sub})

这里操作之后便可以把2.docx文件里面的内容直接插入到doc对象(也就是1.docx)文档中{{sub}}这个变量处,被替换为2.docx中的,基本上用到的都是这两个部分,

最后便是pandoc了,我在这次用到的功能主要是,用来把html文件直接转换为markdow格式文件,然后再转换为txt文件,最后将txt文件内容和格式一同插入到docx文档中,当然,也可以直接把html文件转换为docx文件,格式基本一致

这是用到的命令,而由于使用pandoc是在控制台下cmd或者shell使用的,因此要用到python的另一个包subprocess

import subprocess

subprocess.call('pandoc --latex-engine=xelatex temp.html -o temp.text', cwd='d:\\python', shell=True)

subprocess.call('pandoc --latex-engine=xelatex temp.text -o t1.text', cwd='d:\\python', shell=True)

或者

subprocess.call('pandoc temp.html -o temp.docx', cwd='d:\\python', shell=True)

首先里面的cwd参数设置后,会把这个命令执行环境调到cwd所设置的参数路径处,就如同执行命令前,如同先执行了 cd d:\\python命令一样,shell=True相当于新开了一个shell或者cmd控制台,而关于更多例子,可以去官网的在线转换器https://pandoc.org/try/ 或者官网的例子https://pandoc.org/demos.html

pythondocx模板_python操作docx文档(转)相关推荐

  1. Python操作docx文档设置居中并创建表格

    功能描述:本文代码使用python-docx操作docx文档,添加一段文字并设置居中对齐,添加一个表格并为所有单元格设置文字. from docx import Document from docx. ...

  2. python操作word文档中的图片_Python操作word文档插入图片和表格的实例演示

    前言P6Q免费资源网 图片是Word的一种特殊内容,这篇文章主要介绍了关于Python操作word文档,向里面插入图片和表格的相关内容,下面话不多说了,来一起看看详细的代码P6Q免费资源网 实例代码: ...

  3. python打开word并插入图片_Python操作word文档插入图片和表格的实例演示

    前言 图片是Word的一种特殊内容,这篇文章主要介绍了关于Python操作word文档,向里面插入图片和表格的相关内容,下面话不多说了,来一起看看详细的代码 实例代码: # -*- coding: U ...

  4. python docx 提取图片_Python提取docx文档中所有嵌入式图片和浮动图片

    术语: 浮动图片,是指在Word文档中位置可以自由移动.可以环绕文字或放置于文字上方.下方的图片,不占文档流的位置,可以和文字或嵌入式图片重叠. 嵌入式图片或行内图片,和文档中的文字一样占文档流的位置 ...

  5. python读取docx中表格 图片_python 解析docx文档的方法,以及提取插入的文本对象和图片...

    首先安装docx模块,通过pip install docx或者在docx官方链接上下载安装都可以 下面来看下如何解析docx文档:文档格式如下 有3个部分组成 1 正文:text文档 2 一个表格. ...

  6. C# 操作docx文档

    一.需要引用DocX类库文件,可以直接在NuGet中找到. 二.创建文件,并添加一张表格 public static string fileName = AppDomain.CurrentDomain ...

  7. java用模板生成word(docx)文档(含动态表格)

    生成word思路 用WPS或者office编辑好word的样式,然后另存为word xml文档,将xml翻译为FreeMarker模板,最后用java来解析FreeMarker模板并输出Docx. 编 ...

  8. java使用 xdocreport,以 docx 模板方式进行 docx 文档的下载

    gtihub 文档地址 https://github.com/opensagres/xdocreport/wiki 项目中引入依赖 <!-- xdocreport --> <depe ...

  9. python套用word模板_Python之word文档模板套用 - 真正的模板格式套用

    1 ''' 2 #word模板套用2:套用模板3 ''' 4 5 #导入所需库 6 from docx importDocument7 ''' 8 #另存word文档后格式丢失的问题要导入库设定wor ...

最新文章

  1. android 上传图片到服务器Tomcat(Struts2)
  2. 这是阿里技术专家对 SRE 和稳定性保障的理解
  3. 农产品区域公用品牌 农民丰收节交易会青岛谋定农业品牌
  4. 「SVN」Linux下svn命令使用的实践,个人记录~=傻瓜教程
  5. 计算机工具软件应用考试,《计算机常用工具软件》期中考试题
  6. 信足球vs.信上帝——从全球疯世界杯谈起
  7. python 基础教程(第二版)
  8. YTU 1009: University
  9. 机器学习中的度量——字符串距离
  10. Linux添加环境变量与GCC编译器添加INCLUDE与LIB环境变量
  11. 利用vscode插件C51生成C51的hex文件
  12. python数据库去重_python redis连接 有序集合去重的代码
  13. mysql 自动加上编号
  14. 读书笔记 计算机系统--系统架构与操作系统的高度集成 第二章处理器体系结构...
  15. 《概率统计》知识点(持续更新……)
  16. 使用Go语言实现简单MapReduce框架
  17. unity中使用C#语言判断斗地主出牌牌型
  18. python 经典图书排行榜_计算机优秀书籍每周销售排行榜
  19. 动态箭头gif图标_教程|PPT绘制箭头最全攻略,收藏一下
  20. js 图片类型mage/jpeg, image/bmp, image/gif ,image/png

热门文章

  1. .dat文件还原数据库
  2. Highcharts Pie 饼图提示标签IE下重叠解决方法,及json数据绑定方法
  3. Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual C++ Build Tools解决方案
  4. Win2008 远程时提示“要登录到此远程计算机,您必须被授予允许通过终端登录登录的权限“的解决方法
  5. tomcat报错LifecycleException的解决方案
  6. 解决protobuf import路径的问题
  7. LNMP - Warning: require(): open_basedir restriction in effect错误解决方法
  8. Chrome 提标 您的浏览器限制了第三方Cookie...解决方法
  9. 如何列出JavaScript对象的属性?
  10. 如何使用'git reset --hard HEAD'恢复到之前的提交? [重复]