[分享] 书籍《Python编程快速上手(第2版)》阅读心得9、处理Word文档

xinmeng_wit   2024-6-2 18:28 楼主

Word文档和PDF文档一样都是带有格式的二进制文件,那么处理Word文档和PDF文档一样也需要安装相应的第三方工具,本文中我们使用python-docx模块来处理Word文档。

模块的安装方法详见前面的章节的相关内容。

 

先来看看,Word文档的读取。

事先,我已经准备好了一份Word文档,名字叫demo.docx,具体内容如下:

image.png  

现在,我们通过Python程序来读取该Word文档的内容,并修改一些文本的属性。

import docx

# 打开demo.docx文档
doc = docx.Document('D:\\Python\\demo.docx')
# 打印段落数
print(len(doc.paragraphs))
# 打印第一段的文本内容
print(doc.paragraphs[0].text)
# 打印第一段的runs个数 ,(一串相同的文本格式叫做一个runs)
print(len(doc.paragraphs[0].runs))
# 打印第一段的所有runs的文本内容
for run in range(len(doc.paragraphs[0].runs)):
    print(doc.paragraphs[0].runs[run].text)

# 将第7个段落的第二个runs加上下划线
doc.paragraphs[6].runs[1].underline = True
# 第三个runs加上下划线
doc.paragraphs[6].runs[2].underline = True


# 文件另存为demo_restyled.docx
doc.save('D:\\Python\\demo_restyled.docx')

运行结果:

image.png  

最后一个段落的对应的runs被加上了下划线,如下:

image.png  

 

总结下来,docx提供了一些方法能够对段落的读取,对runs的读取,对文本的读取,还可以对格式和属性的设置。

 

接下来,来看看使用docx模块来创建word文档,并向文档力增加段落、标题、分页和增加图片的功能。

新增段落使用add_paragraph()方法;

新增runs使用add_run()方法;

新增标题使用add_heading()方法;

换页使用add_break(docx.enum.text.WD_BREAK.PAGE)方法;

新增图片使用add_picture()方法。

import docx

# 新建空的word文档
doc = docx.Document()
# 增加段落
doc.add_paragraph('Hello, word!!!')

# 增加另外两个段落
paraObj1 = doc.add_paragraph('This is a second paragraph.')
paraObj2 = doc.add_paragraph('This is a yet another paragraph.')

# 在第二个段落中增加一个runs
paraObj1.add_run('This text is being added to the second paragraph.')

# 添加一个段落,并使用一种标题样式,可以设置为0~4
doc.add_heading('Header 0', 0)
doc.add_heading('Header 1', 1)
doc.add_heading('Header 2', 2)
doc.add_heading('Header 3', 3)
doc.add_heading('Header 4', 4)

# 在最后一个段落的第一个runs后面添加新的一页文档
doc.paragraphs[len(doc.paragraphs) - 1].runs[0].add_break(docx.enum.text.WD_BREAK.PAGE)
# 新增一个段落
doc.add_paragraph('This is on the second page.')

# 新增一张图片,并指定宽度和高度均为8cm
doc.add_picture('D:\\Python\\python.png', width=docx.shared.Cm(8), height=docx.shared.Cm(8))

# 保存
doc.save('D:\\Python\\word_write.docx')

代码运行后会生成word_write.docx文档,打开文档就能看到包含2页的文档内容,与我们程序力设置的是一样的。

image.png   由此可见,python-docx这个模块还是不错的,基本能满足日常需要了,能新增段落,新增runs,设置格式风格,增加图片,换页等等。

本次使用的不是最新的python-docx版本,具有一些的局限性,可能最新的版本会有一些新的特性。

例如,当前这个版本不能在任意位置新增段落,也不能在任意位置增加runs,这一点使用起来有些不方便,希望在新版本中能增强。

 

好了,这就是关于word文档处理的全部内容,谢谢大家的支持。

回复评论 (6)

当年用python可以自动写报告,就是很牛的人了,现在看来,人人都会。

点赞  2024-6-2 21:24
引用: lugl4313820 发表于 2024-6-2 21:24 当年用python可以自动写报告,就是很牛的人了,现在看来,人人都会。

对的,现在python都能解决,哈哈


点赞  2024-6-2 21:41

哎呀。。。。。这个控制docx的很厉害呀!

怎么感觉有LaTex控制文档的感觉

点赞  2024-6-3 10:04

感谢楼主分享的python处理word文档的相关知识,受益匪浅,涨知识了,

点赞  2024-6-3 11:37
引用: hellokitty_bean 发表于 2024-6-3 10:04 哎呀。。。。。这个控制docx的很厉害呀! 怎么感觉有LaTex控制文档的感觉

大佬,有空可以试试,还蛮好用的

点赞  2024-6-3 20:05
引用: chejm 发表于 2024-6-3 11:37 感谢楼主分享的python处理word文档的相关知识,受益匪浅,涨知识了,

一起 学习

点赞  2024-6-3 20:06
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复