这就是Python的魅力,让工作更轻松!
今天,我们就来了解一下用Python读写Word文档。未来,我将再出两期进行补充介绍,一篇是批量生成Word文档的方法(也就是我搞定同事需求的案例),另外一篇是详解Python写Word(包含可能你都不知道的各种Word格式),敬请期待哈~
目录:
- 1. 安装模块
- 2. 读取Word文档
- 3. 写入Word文档
1. 安装模块
这里我们用到的是python-docx
模块,读写Word
文档的操作均有它完成!
在进行后续介绍前,我们先简单了解一下Word
文档。和纯文本(比如txt
)相比, .docx
文件有很多种结构,这些结构在python-docx
中用3种不同的类型来表示:最高一层是Document
对象表示文档,每个Document
对象包含一个Paragraph
对象也就是段落组成的列表,而每个Paragraph对象则包含一个Run
对象的列表,至于Run
对象大家可以通过下面的段落Paragraph
来了解。
我们知道Word里的文本包含有很多格式,比如字体、字号、粗体/斜体、颜色等等。一个Run
对象是具有相同格式的文本,当发生变化的时候就需要一个新的Run
对象,这也就是上图中1个Paragraph对象有4个Run对象的原因。
理解以上知识后,我们再来了解读与写吧。
2. 读取Word文档
我们本地创建一个案例文档,用于演示读取Word,案例文档内容如下:
可以看到文档一共有四行,两行标题以及两行正文。
我们知道了读取Word每个paragraph段落和Run,那么如何读取完整的Word文本内容呢?这里,自定义一个函数将全部的paragraph段落内容存起来,每个paragraph段落之间用换行符n
隔开即可。
我们调用该函数,可以得到:
当然了,这里读取后输出显示的文本不带有格式属性哈。
3. 写入Word文档
在写入Word之前,我们先简单了解下Word的一些格式规则。
毫不夸张的讲,把全局样式玩的明白的人蛮少的。这方面主要是正文样式与标题样式,如果玩得明白的话,其实设置好了之后几乎不需要再进行啥调整,全局格式都能自动设置与更新。就我所见的大多数朋友的文档,这方面基本达不到。(感觉会被爆锤~~)
比如,我们可以设置正文样式为 微软雅黑字体,字号12,缩进,间距等等;设置标题样式为 微软雅黑字体,字号14,删除段落后间距等等。
在我们Python处理Word的时候,段落样式可以应用于
Paragraph
对象,字符样式可以应用于Run
对象,链接的样式可以应用于这两种对象。可以将Paragraph
和Run
对象的style
属性设置为一个字符串,从而设置样式。这个字符串应该是一种样式的名称。如果style
被设置为None
,就没有样式与Paragraph
或Run
对象关联。
当然,这里我们不展开介绍,就简单介绍Run
对象上的字符属性。关于更多的介绍,我们放在第三期的 详解Python写Word里。
对于Run
对象的字符text
属性,都有3个状态:True
(启用)、False
(禁用)和None
(默认)。
text
属性有哪些?看下表:
属性 | 描述 |
---|---|
bold | 文本以粗体出现 |
italic | 文本以斜体出现 |
underline | 文本带下划线 |
strike | 文本带删除线 |
double_strike | 文本带双删除线 |
all_caps | 文本以大写首字母出现 |
small_caps | 文本以大写首字母出现,小写字母小两个点 |
shadow | 文本带阴影 |
outline | 文本以轮廓线出现,而不是实心 |
rtl | 文本从右至左书写 |
imprint | 文本以刻入页面的方式出现 |
emboss | 文本以凸出页面的方式出现 |
我们演示一下:
以上就是对段落的一些简单介绍及演示,接下来,我们来看看怎么创建并写入Word。
要创建自己的.docx
文件,就调用 docx.Document()
,返回一个新的、空白的 Word Document
对象 。Document
对象的 add_paragraph()
方法将一段新文本添加到文档中,并返回添加的 Paragraph 对象的引用。在添加完文本之后,向 Document 对象的 save()
方法传入一个文件名字符串,将 Document 对象保存到文件。
我们可以添加段落、设置段落文本样式等等,比如:
我们还可以添加一个段位,这个段落为标题样式,这里需要用到add_heading()
。它有两个参数,字符串表示文本内容,后面数字是标题层级。
同样,我们还可换行与换页操作。
要添加换行符(而不是开始一个新的段落),可以在 Run 对象上调用 add_break()
方法,换行符将出现在它后面。如果希望添加换页符,可以将 docx.text.WD_BREAK.PAGE
作为唯一的参数,传递给 add_break()
。
有人会说,一般word里还有图片嘛,当然咱们也能搞定添加图片。
有一个 add_picture()
方法,可以在段落末尾添加图像 。
以上就是本次的简单入门介绍。
其实Word文档各种样式设置,数据类型展示等等非常丰富,而Python-docx
这个模块其实也能进行大多数的处理。
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python中return语句的三种用法08/11
- ♥ 长假余额为零!我用Python做了个中秋国庆双节拼图游戏05/26
- ♥ python字符串分隔类方法总结11/01
- ♥ Python解释器有几种类型11/05
- ♥ 如何在python中对字典进行排序08/15
- ♥ python如何识别文件格式10/28
内容反馈