Word文档和PDF文档一样都是带有格式的二进制文件,那么处理Word文档和PDF文档一样也需要安装相应的第三方工具,本文中我们使用python-docx模块来处理Word文档。
模块的安装方法详见前面的章节的相关内容。
先来看看,Word文档的读取。
事先,我已经准备好了一份Word文档,名字叫demo.docx,具体内容如下:
现在,我们通过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')
运行结果:
最后一个段落的对应的runs被加上了下划线,如下:
总结下来,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页的文档内容,与我们程序力设置的是一样的。
由此可见,python-docx这个模块还是不错的,基本能满足日常需要了,能新增段落,新增runs,设置格式风格,增加图片,换页等等。
本次使用的不是最新的python-docx版本,具有一些的局限性,可能最新的版本会有一些新的特性。
例如,当前这个版本不能在任意位置新增段落,也不能在任意位置增加runs,这一点使用起来有些不方便,希望在新版本中能增强。
好了,这就是关于word文档处理的全部内容,谢谢大家的支持。
当年用python可以自动写报告,就是很牛的人了,现在看来,人人都会。
引用: lugl4313820 发表于 2024-6-2 21:24 当年用python可以自动写报告,就是很牛的人了,现在看来,人人都会。
对的,现在python都能解决,哈哈
哎呀。。。。。这个控制docx的很厉害呀!
怎么感觉有LaTex控制文档的感觉
引用: hellokitty_bean 发表于 2024-6-3 10:04 哎呀。。。。。这个控制docx的很厉害呀! 怎么感觉有LaTex控制文档的感觉
大佬,有空可以试试,还蛮好用的
引用: chejm 发表于 2024-6-3 11:37 感谢楼主分享的python处理word文档的相关知识,受益匪浅,涨知识了,
一起 学习