前言:
该模块可以通过python代码来对word文档进行大批量的编辑。docx它提供了一组功能丰富的函数和方法,用于创建、修改和读取Word文档。下面是docx
模块中一些常用的函数和方法的介绍:
安装:pip install docx
一、准备一个word文档,文档内容大致如下
二、读取文档中的内容
1、读取段落内容
通过遍历 doc.paragraphs
来获取文档中的每个段落的文本内容。
from docx import Documentpath = 'test.docx' #word文档路径
doc = Document(path) #创建一个文档对象#遍历文档中的所有段落
for par in doc.paragraphs:text = par.textprint(text)
输出的结果如下:
2、读取表格内容
from docx import Documentpath = 'test.docx' #word文档路径
doc = Document(path) #创建一个文档对象# 遍历文档中的表格
for table in doc.tables:for row in table.rows:for cell in row.cells:text = cell.textprint(text)
输出的结果如下:
需要开发工具来实现word 或 Excel 批量编辑的欢迎给我留言
[+]可以代开发可视化操作界面;
[+]高度贴合用户需求和使用场景;
[+]一次投入,永久受益,实现高效快速办公,永久解放双手
三、修改
修改内容需要注意,需要配合
document.save(file_path)
:将文档保存到指定的文件路径file_path
。
1、修改文档内容: 比如把文档中的 “所有的123” 替换成 “好好学习”
from docx import Documentpath = 'test.docx' #word文档路径
doc = Document(path) #创建一个文档对象
# 遍历文档中的所有段落
for par in doc.paragraphs:text = par.textif '123' in par.text:par.text = par.text.replace('123','好好学习!')
#凡是有保存功能的,需要先把原文档关闭才可以编辑
doc.save(path) #注意这里如果使用的原文档的路径,则会直接对原文档的内容进行修改,
new_path = 'new_test.docx' #创建一个新路径
doc.save(new_path) #这里则会把内容保存到一个新文档中
输出结果:
因为我这里保存了两个路径:
1、可以看到这里新生成了一个word文档
2、查看两个文档中的内容
原文档:
新生成文档:
总结:
1、思路:
先定位修改的内容——>然后赋值——>保存(没有修改的内容都会原样保存下来)
2、运行修改的功能时候需要把原文档关闭;
3、如果不生成新的文档则切记,修改内容不可逆!!!
2、修改表格内容: 把表格中的 “休息” 替换成 “预习”
这里可以多复制几张表格
按照上面的思路来:
1、先定位,找到修改目标的坐标
from docx import Documentpath = 'test.docx' #word文档路径
doc = Document(path) #创建一个文档对象
tables = doc.tables
#获取表格中所有内容对应的坐标
for i, row in enumerate(tables[0].rows):for j, cell in enumerate(row.cells):print( f'[+]{cell.text} [+]对应的坐标是 ({i}, {j})\n')
输出结果:
这里注意(这里找坐标和我们平时看表的习惯不一样,他们并没有逻辑上的关系,而只是单纯的坐标来对应)
2、记住这个坐标我们后面就可以对所有的表进行修改:
注意下面代码中的 cell(2,1) 中的坐标就是上面我们找到的坐标,通过tables[tab]是逐一遍历出每一张表格,然后把对应的坐标文档替换为 '预习'.
from docx import Documentpath = 'test.docx' #word文档路径 doc = Document(path) #创建一个文档对象 tables = doc.tables #这里已经把文档中的所有表格都取出来了,以列表的形式存储 #获取表格中所有内容对应的坐标 for tab in range(len(tables)):tables[tab].cell(2,1).text='预习' # #凡是有保存功能的,需要先把原文档关闭才可以编辑 doc.save(path) #注意这里如果使用的原文档的路径,则会直接对原文档的内容进行修改,
输出结果: