python使用python-docx处理word的方法示例

 更新时间:2025年01月05日 09:27:10   作者:秃了也弱了。  
本文介绍了python-docx模块,用于自动化操作Word文档,包括创建、写入和读取Word文档等方法,具有一定的参考价值,感兴趣的可以了解一下

一、python-docx简介

python自动化操作Word最常用的模块就是python-docx。

python-docx模块处理word文档,处理方式是面向对象的。也就是说python-docx模块会把word文档,文档中的段落、文本、字体等都看做对象,对对象进行处理就是对word文档的内容处理。

如果需要读取word文档中的文字(一般来说,程序也只需要认识word文档中的文字信息),需要先了解python-docx模块的几个概念。
Word文档一般可以结构化成三个部分:

  • Document,表示一个word文档
  • Paragraph,表示word文档中的一个段落
  • Run,表示段落中的文字块

在这里插入图片描述

Document - Paragraph - Run三级结构,这是最普遍的情况。但是如果Word中存在表格,这时会有新的文档结构,如下:

在这里插入图片描述

这时的结构非常类似Excel, 可以看成Document-Table-Row/Column-Cells四级结构。

# 安装
pip install python-docx

二、基本使用

1、新建与保存word

from docx import Document
document = Document() #创建一个空文档
document.save(r'D:\自动化\word\道德经.docx') # 保存文件

2、写入Word

from docx import Document # 导入docx库
from docx.shared import Inches, Cm # 导入英寸单位 厘米Cm (可用于指定图片大小、表格宽高等)

# 打开一个document
file_path = r'D:\自动化\word\道德经.docx'
document = Document(file_path)

# 设置标题段落
document.add_heading('道德经', 0)

# 添加段落
p = document.add_paragraph('道可道,非常道;名可名,非常名。')
p.add_run('无名,天地之始,').bold = True # 在指定段落后添加粗体文字
p.add_run('有名,') # 在指定段落后添加默认格式文字
p.add_run('万物之母。').italic = True # 在指定段落后添加斜体文字

# 添加1级标题=标题1
document.add_heading('故常无欲,', level=1)

# 添加指定格式段落 style后面则是样式
document.add_paragraph('以观其妙,', style='Intense Quote')
# 添加段落,样式为List Bullet类型
document.add_paragraph('常有欲,以观其徼。', style='List Bullet')
# 添加段落,样式为List Number类型
document.add_paragraph('此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。', style='ListNumber')
document.add_paragraph('所以说,霸夫老师教Python,教得妙。', style='List Number')

# 添加图片
img_path = r'D:\自动化\word\girl.png'
document.add_picture(img_path)
document.add_picture(img_path, width=Inches(1.25))
document.add_picture(img_path, width=Cm(5), height=Cm(5))

# 待添加到表格的内容
records = (
	(1, '李白', '诗仙'),
	(2, '杜甫', '诗圣'),
	(3, '白居易', '香山居士, 与元稹并称元白, 与刘禹锡合称刘白')
)

# 添加一个1行3列的表格, 表格样式为Table Grid
# 表格样式参数可选,缺省时为Normal Table
# Normal Table
# Table Grid
# Light Shading、 Light Shading Accent 1 至 Light Shading Accent 6
# Light List、Light List Accent 1 至 Light List Accent 6
# Light Grid、Light Grid Accent 1 至 Light Grid Accent 6
# 太多了其它省略...
table = document.add_table(rows=1, cols=3, style='Table Grid')
# 填充标题行
hdr_cells = table.rows[0].cells
hdr_cells[0].text = '序号'
hdr_cells[1].text = '姓名'
hdr_cells[2].text = '描述'

# 动态添加数据行
for id, name, desc in records:
	row_cells = table.add_row().cells
	row_cells[0].text = str(id)
	row_cells[1].text = name
	row_cells[2].text = desc

document.add_paragraph('再添加一个表格')
# 待添加到表格的内容
records2 = [
	["姓名", "性别", "家庭地址"],
	["貂蝉", "女", "河北省"],
	["杨贵妃", "女", "贵州省"],
	["西施", "女", "山东省"]
]

# 添加一个4行3列的表格
table2 = document.add_table(rows=4, cols=3, style='Light List Accent 5')

# 填充表格
for 行索引 in range(4):
	cells = table2.rows[行索引].cells
	for 列索引 in range(3):
		cells[列索引].text = str(records2[行索引][列索引])
# 添加分页符
document.add_page_break()
# 保存文档
document.save(file_path)

(1)打开文档

Document()传入参数是打开相应的文档,不传参数则是创建一个空文档。

# 创建一个空文档
document = Document()
# 加载旧文档(用于修改或添加内容)
document = Document('exist.docx')

(2)添加标题

level等级1-9 也就是标题1-标题9,我们可以在旧文档中将标题格式设置好,使用Python-docx打开旧文档,再添加相应等级标题即可。

document.add_heading('一级标题', level=1)

(3)添加段落

段落在 Word 中是基本内容。它们用于正文文本,也用于标题和项目列表(如项目符号)。
添加段落的时候,赋值给一个变量,方便我们后面进行格式调整。

p = document.add_paragraph('道可道,非常道;名可名,非常名。')
# 添加指定格式段落 style后面则是样式
document.add_paragraph('以观其妙,', style='Intense Quote')

(4)添加文字块

在指定段落上添加文字块。

p.add_run('无名,天地之始,').bold = True # 在指定段落后添加粗体文字
p.add_run('有名,') # 在指定段落后添加默认格式文字
p.add_run('万物之母。').italic = True # 在指定段落后添加斜体文字

(5)添加图片

width, height可用于设置图片尺寸,缺省时为图片默认大小。

document.add_picture('girl.png')
document.add_picture('girl.png', width=Inches(1.25))
document.add_picture('girl.png', width=Cm(5), height=Cm(5))

(6)添加表格

表格样式style参数可选,缺省时默认为Normal Table。
常用样式有:
Normal Table
Table Grid
Light Shading、 Light Shading Accent 1 至 Light Shading Accent 6
Light List、Light List Accent 1 至 Light List Accent 6
Light Grid、Light Grid Accent 1 至 Light Grid Accent 6

# 添加一个4行3列的表格
table = document.add_table(rows=4, cols=3)
table = document.add_table(rows=4, cols=3, style='Light Shading Accent 2')

(7)添加分页符

# 添加分页符
document.add_page_break()

3、读取word

'''
文档.paragraphs可以获取文档中所有段落数据,不包含表格,这里注意一点图片跟分页符也会计算在段落数据内
段落.runs 可以获取段落的所有文字块
文档.tables可以获取文档中所有表格数据
文档.save (path) 可以用于保存修改后的文档本身,同样也可在将打开的文档另存为新文档
'''
from docx import Document
doc = Document(r'D:\自动化\word\道德经.docx')

# 读取 word 中所有内容
for p in doc.paragraphs:
	print(p, p.text)

# 读取指定段落中的所有run
for run in doc.paragraphs[1].runs:
	print(run, run.text)

# 读取 word中所有表格内容
for 表格 in doc.tables:
	print(表格)
	for 行 in 表格.rows:
		for 单元格 in 行.cells:
			print(单元格.text)

doc.save(r'D:\自动化\word\另存为新文档.docx')

到此这篇关于python使用python-docx处理word的方法示例的文章就介绍到这了,更多相关python-docx处理word内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • python装饰器设置参数方式

    python装饰器设置参数方式

    这篇文章主要介绍了python装饰器设置参数方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • python使用IPython调试debug程序

    python使用IPython调试debug程序

    这篇文章主要为大家介绍了python使用IPython调试debug程序详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Django restful framework生成API文档过程详解

    Django restful framework生成API文档过程详解

    这篇文章主要介绍了Django restful framework生成API文档过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • Anaconda的安装与虚拟环境建立

    Anaconda的安装与虚拟环境建立

    这篇文章主要介绍了Anaconda的安装与虚拟环境建立
    2020-11-11
  • Python实现下雪效果的示例代码

    Python实现下雪效果的示例代码

    turtle是Python编程语言中的一个模块,用于绘制图形和图形动画,本文主要为大家详细介绍了Python如何使用turtle实现张万森下雪了的效果,感兴趣的可以了解下
    2023-12-12
  • Python入门(六)Python数据类型

    Python入门(六)Python数据类型

    这篇文章主要介绍了Python入门(六)Python数据类型,Python是一门非常强大好用的语言,也有着易上手的特性,本文为入门教程,需要的朋友可以参考下
    2023-04-04
  • Python中pygame游戏模块的用法详解

    Python中pygame游戏模块的用法详解

    Pygame是一组用来开发游戏软件的 Python 程序模块,Pygame 在 SDL(Simple DirectMedia Layer) 的基础上开发而成,它提供了诸多操作模块,本文给大家介绍了Python中pygame游戏模块的用法,需要的朋友可以参考下
    2024-01-01
  • 对PyQt5基本窗口控件 QMainWindow的使用详解

    对PyQt5基本窗口控件 QMainWindow的使用详解

    今天小编就为大家分享一篇对PyQt5基本窗口控件 QMainWindow的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • Python使用xlrd读取Excel格式文件的方法

    Python使用xlrd读取Excel格式文件的方法

    这篇文章主要介绍了Python使用xlrd读取Excel格式文件的方法,实例分析了Python操作Excel文件的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • 执行Python程序时模块报错问题

    执行Python程序时模块报错问题

    这篇文章主要介绍了执行Python程序时模块报错问题及解决方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03

最新评论