前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用python-docx模块读写word文件

使用python-docx模块读写word文件

作者头像
生信修炼手册
发布2020-12-11 10:38:55
1.5K0
发布2020-12-11 10:38:55
举报
文章被收录于专栏:生信修炼手册

欢迎关注”生信修炼手册”!

word文档的自动化处理是一件比较头痛的事情,因为深耕于windows操作系统,对于跨平台需求的word文档编辑,是非常痛苦的一件事。在python的生态环境中,提供了python-docx这个模块,可以方便的进行跨平台的word文档处理,但是只适合word 2007以后的文档,即后缀为docx的文档。

处理excel文件,需要先创建一个workbook,与之对应,处理word文档,首先需要创建Document对象,用法如下

代码语言:javascript
复制
>>> from docx import Document
>>> document = Document()

Document用于表征一个具体的word文档,在此基础上,包含了常见的各种元素,常用的几个元素列表如下

1.heading

2.paragraph

3.page break

4.table

5.picture

1. heading

heading表示标题,通过add_heading方法,可以添加标题,用法如下

代码语言:javascript
复制
>>> document.add_heading('header')

我们编辑word文档的时候,可以有多种不同等级的标题,在该模块中,通过level参数可以指定不同的等级,取值范围为0-9,用法如下

代码语言:javascript
复制
>>> document.add_heading('header', level = 0)

2. paragraph

paragraph表示段落,通过add_paragraph方法添加段落,用法如下

代码语言:javascript
复制
>>> document.add_paragraph("First paragraph")

在段落的基础上,可以通过add_run来不断进行拼接,用法如下

代码语言:javascript
复制
>>> document.add_paragraph("北京欢迎您").add_run("welcome to Beijing")

add_run的用处在于针对部分文字,单独进行处理,比如设置其字体大小,颜色等,用法如下

代码语言:javascript
复制
>>> paragraph = document.add_paragraph("First Paragraph")
>>> text = paragraph.add_run('Bold Text')
>>> text.bold = True

3. page break

page break表示分页,通过add_page_break方法进行添加,用法如下

代码语言:javascript
复制
>>> document.add_page_break()

4. table

table表示表格,通过add_table函数进行添加,用法如下

代码语言:javascript
复制
>>> table = document.add_table(rows=2, cols=2)

创建表格之后,我们需要对单元格进行赋值, 有以下两种方法

代码语言:javascript
复制
# cell函数获取对应的单元格
>>> cell = table.cell(0, 0)
>>> cell.text = "cell"
>>> table.row[0].cells[0].text
#  通过rows和cells的结合获取对应的单元格
>>> table.rows[0].cells[0].text
'cell'

对于一个table, 可以通过如下方式进行遍历

代码语言:javascript
复制
>>> for row in table.rows:
...     for cell in row.cells:
...             print(cell.text)

5, picture

picture表示图片,通过add_picture函数进行添加,用法如下

代码语言:javascript
复制
>>> document.add_picture('imae.png')

对于word文档而言,除了基本元素之外,还有一个重大元素就是样式。对于字体的大小,颜色,间隔等等各种样式进行设置,从而呈现出一个美观的排版效果,这是word和普通的文本编辑器最大的不同之处。

在python-docx模块中,内置了可以用于段落,表格,文字的各种style, 详细列表见如下链接

https://python-docx.readthedocs.io/en/latest/user/styles-understanding.html

style具有name, type等属性,通过如下方式可以访问具体的style

代码语言:javascript
复制
# 遍历所有的内置styles
>>> for i in document.styles:
... print(i.name)
...
# 用字典的方式访问style, key为style的名字
>>> document.styles['Normal']
_ParagraphStyle('Normal') id: 60660368
>>> document.styles['Colorful Grid Accent 6']
_TableStyle('Colorful Grid Accent 6') id: 60660440
>>> document.styles['Medium Grid 3']
_TableStyle('Medium Grid 3') id: 60660368
>>> document.styles['Strong']
<docx.styles.style._CharacterStyle object at 0x039D9AD8>

以段落为例,应用style的用法如下

代码语言:javascript
复制
# 一步法
>>> paragraph = document.add_paragraph("Fisrt Paragraph", style="Normal")
>>> paragraph = document.add_paragraph("Fisrt Paragraph", style=document.styles['Normal'])
# 两步法
>>> paragraph = document.add_paragraph("Fisrt Paragraph")
>>> paragraph.style = "Normal"

style是针对特定元素排版的一整套规则,包含了很多的样式,对于单个属性的设置,通过style就太厚重了,此时可以使用特定的属性来设置。

python-docx将常用的一些属性设置成了内置的常量,保存在docx.enum模块中,比如设置段落对齐方式为居中对齐,用法如下

代码语言:javascript
复制
>>> from docx.enum.text import WD_ALIGN_PARAGRAPH
>>> paragraph = document.add_paragraph()
>>> paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER

完整的内置常量可以参考官方的API文档,对word文档编辑之后,可以如下方式另存为新的文档

代码语言:javascript
复制
>>> document.save('out.docx')

python-docx提供了一种跨平台的word自动化处理功能,对于简单排版的word处理,非常的好用。

·end·

—如果喜欢,快分享给你的朋友们吧—

原创不易,欢迎收藏,点赞,转发!生信知识浩瀚如海,在生信学习的道路上,让我们一起并肩作战!

本公众号深耕耘生信领域多年,具有丰富的数据分析经验,致力于提供真正有价值的数据分析服务,擅长个性化分析,欢迎有需要的老师和同学前来咨询。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信修炼手册 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档