前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python之python-docx编辑和读取word文档

python之python-docx编辑和读取word文档

作者头像
菲宇
发布2019-06-13 11:57:36
3.3K0
发布2019-06-13 11:57:36
举报
文章被收录于专栏:菲宇菲宇

python调用word接口主要用到的模板为python-docx,基本操作官方文档有说明。

python-docx官方文档地址

使用python新建一个word文档,操作就像文档里介绍的那样:

代码语言:javascript
复制
 1 from docx import Document
 2 from docx.shared import Inches
 3 
 4 document = Document()
 5 
 6 document.add_heading('Document Title', 0)  #插入标题
 7 
 8 p = document.add_paragraph('A plain paragraph having some ')   #插入段落
 9 p.add_run('bold').bold = True
10 p.add_run(' and some ')
11 p.add_run('italic.').italic = True
12 
13 document.add_heading('Heading, level 1', level=1)
14 document.add_paragraph('Intense quote', style='IntenseQuote')
15 
16 document.add_paragraph(
17     'first item in unordered list', style='ListBullet'
18 )
19 document.add_paragraph(
20     'first item in ordered list', style='ListNumber'
21 )
22 
23 document.add_picture('monty-truth.png', width=Inches(1.25)) #插入图片
24 
25 table = document.add_table(rows=1, cols=3) #插入表格
26 hdr_cells = table.rows[0].cells
27 hdr_cells[0].text = 'Qty'
28 hdr_cells[1].text = 'Id'
29 hdr_cells[2].text = 'Desc'
30 for item in recordset:
31     row_cells = table.add_row().cells
32     row_cells[0].text = str(item.qty)
33     row_cells[1].text = str(item.id)
34     row_cells[2].text = item.desc
35 
36 document.add_page_break()
37 
38 document.save('demo.docx')  #保存文档

读取和编辑一个已有的word文档,只需在一开始添加上文件路径就行了,如下:

代码语言:javascript
复制
 1 from docx import Document
 2 from docx.shared import Inches
 3 
 4 document = Document('demo.docx')  #打开文件demo.docx
 5 for paragraph in document.paragraphs:
 6     print(paragraph.text)  #打印各段落内容文本
 7 
 8 document.add_paragraph(
 9     'Add new paragraph', style='ListNumber'
10 )    #添加新段落
11 
12 document.save('demo.docx') #保存文档

如果是想读取其中的图片或是更复杂地编辑,首先我们需要先来认识下docx文档的格式组成:

docx是Microsoft Office2007之后版本使用的,用新的基于XML的压缩文件格式取代了其目前专有的默认文件格式,在传统的文件名扩展名后面添加了字母“x”(即“.docx”取代“.doc”、“.xlsx”取代“.xls”、“.pptx”取代“.ppt”)。

docx格式的文件本质上是一个ZIP文件。将一个docx文件的后缀改为ZIP后是可以用解压工具打开或是解压的。事实上,Word2007的基本文件就是ZIP格式的,他可以算作是docx文件的容器。

docx 格式文件的主要内容是保存为XML格式的,但文件并非直接保存于磁盘。它是保存在一个ZIP文件中,然后取扩展名为docx。将.docx 格式的文件后缀改为ZIP后解压, 可以看到解压出来的文件夹中有word这样一个文件夹,它包含了Word文档的大部分内容。而其中的document.xml文件则包含了文档的主要文本内容。

word目录下:

document.xml文件内容:

media目录下存放word文档中插入的图片:

所以,我们可以使用手工的方法编辑文件document.xml来对该word文档内容进行编辑,或是提取文档media中图片文件的方式来提取该word文档中所插入的所有图片。

代码语言:javascript
复制
1 import zipfile
2 
3 f=zipfile.ZipFile('demo.docx','r') 
4 
5 for filename in f.namelist():
6     f.extract(filename)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年05月22日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • python调用word接口主要用到的模板为python-docx,基本操作官方文档有说明。
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档