Python使用docx模塊編輯Word文檔
前言
該模塊可以通過python代碼來(lái)對(duì)word文檔進(jìn)行大批量的編輯。docx它提供了一組功能豐富的函數(shù)和方法,用于創(chuàng)建、修改和讀取Word文檔。下面是docx模塊中一些常用的函數(shù)和方法的介紹:
安裝:
pip install docx
一、準(zhǔn)備一個(gè)word文檔
文檔內(nèi)容大致如下

二、讀取文檔中的內(nèi)容
1、讀取段落內(nèi)容
通過遍歷 doc.paragraphs 來(lái)獲取文檔中的每個(gè)段落的文本內(nèi)容。
from docx import Document
path = 'test.docx' #word文檔路徑
doc = Document(path) #創(chuàng)建一個(gè)文檔對(duì)象
#遍歷文檔中的所有段落
for par in doc.paragraphs:
text = par.text
print(text)輸出的結(jié)果如下:

2、讀取表格內(nèi)容
from docx import Document
path = 'test.docx' #word文檔路徑
doc = Document(path) #創(chuàng)建一個(gè)文檔對(duì)象
# 遍歷文檔中的表格
for table in doc.tables:
for row in table.rows:
for cell in row.cells:
text = cell.text
print(text)輸出的結(jié)果如下:

三、修改
修改內(nèi)容需要注意,需要配合document.save(file_path):將文檔保存到指定的文件路徑file_path。
1、修改文檔內(nèi)容
比如把文檔中的 “所有的123” 替換成 “好好學(xué)習(xí)”
from docx import Document
path = 'test.docx' #word文檔路徑
doc = Document(path) #創(chuàng)建一個(gè)文檔對(duì)象
# 遍歷文檔中的所有段落
for par in doc.paragraphs:
text = par.text
if '123' in par.text:
par.text = par.text.replace('123','好好學(xué)習(xí)!')
#凡是有保存功能的,需要先把原文檔關(guān)閉才可以編輯
doc.save(path) #注意這里如果使用的原文檔的路徑,則會(huì)直接對(duì)原文檔的內(nèi)容進(jìn)行修改,
new_path = 'new_test.docx' #創(chuàng)建一個(gè)新路徑
doc.save(new_path) #這里則會(huì)把內(nèi)容保存到一個(gè)新文檔中輸出結(jié)果:
因?yàn)槲疫@里保存了兩個(gè)路徑:
1、可以看到這里新生成了一個(gè)word文檔

2、查看兩個(gè)文檔中的內(nèi)容
原文檔:

新生成文檔:

總結(jié):
1、思路:
先定位修改的內(nèi)容——>然后賦值——>保存(沒有修改的內(nèi)容都會(huì)原樣保存下來(lái))
2、運(yùn)行修改的功能時(shí)候需要把原文檔關(guān)閉;
3、如果不生成新的文檔則切記,修改內(nèi)容不可逆?。?!
2、修改表格內(nèi)容
把表格中的 “休息” 替換成 “預(yù)習(xí)”
這里可以多復(fù)制幾張表格

按照上面的思路來(lái):
1、先定位,找到修改目標(biāo)的坐標(biāo)
from docx import Document
path = 'test.docx' #word文檔路徑
doc = Document(path) #創(chuàng)建一個(gè)文檔對(duì)象
tables = doc.tables
#獲取表格中所有內(nèi)容對(duì)應(yīng)的坐標(biāo)
for i, row in enumerate(tables[0].rows):
for j, cell in enumerate(row.cells):
print( f'[+]{cell.text} [+]對(duì)應(yīng)的坐標(biāo)是 ({i}, {j})\n')
輸出結(jié)果:
這里注意(這里找坐標(biāo)和我們平時(shí)看表的習(xí)慣不一樣,他們并沒有邏輯上的關(guān)系,而只是單純的坐標(biāo)來(lái)對(duì)應(yīng))

2、記住這個(gè)坐標(biāo)我們后面就可以對(duì)所有的表進(jìn)行修改:
注意下面代碼中的 cell(2,1) 中的坐標(biāo)就是上面我們找到的坐標(biāo),通過tables[tab]是逐一遍歷出每一張表格,然后把對(duì)應(yīng)的坐標(biāo)文檔替換為 '預(yù)習(xí)'.
from docx import Document
path = 'test.docx' #word文檔路徑
doc = Document(path) #創(chuàng)建一個(gè)文檔對(duì)象
tables = doc.tables #這里已經(jīng)把文檔中的所有表格都取出來(lái)了,以列表的形式存儲(chǔ)
#獲取表格中所有內(nèi)容對(duì)應(yīng)的坐標(biāo)
for tab in range(len(tables)):
tables[tab].cell(2,1).text='預(yù)習(xí)'
# #凡是有保存功能的,需要先把原文檔關(guān)閉才可以編輯
doc.save(path) #注意這里如果使用的原文檔的路徑,則會(huì)直接對(duì)原文檔的內(nèi)容進(jìn)行修改,輸出結(jié)果:

到此這篇關(guān)于Python使用docx模塊編輯Word文檔的文章就介紹到這了,更多相關(guān)Python docx編輯Word內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python字典刪除鍵值對(duì)和元素的四種方法(小結(jié))
刪除列表或者字符串元素的方法不止一種,同樣,刪除字典元素的方法也不止一種,本文主要介紹python中刪除字典元素的四種方法:1、使用del語(yǔ)句;2、使用clear();3、使用pop();4、使用popitem()。感興趣的可以了解一下2021-12-12
Python利用哈希表緩存避免重復(fù)計(jì)算實(shí)現(xiàn)性能提速
這篇文章主要介紹了Python利用哈希表緩存避免重復(fù)計(jì)算實(shí)現(xiàn)性能提速,通過為輸入圖像生成內(nèi)容哈希,并結(jié)合LRU內(nèi)存管理策略,實(shí)現(xiàn)了對(duì)重復(fù)識(shí)別請(qǐng)求的高效攔截,需要的朋友可以參考下2026-02-02
Python+OpenCV內(nèi)置方法實(shí)現(xiàn)行人檢測(cè)
OpenCV附帶一個(gè)預(yù)訓(xùn)練的HOG+線性SVM模型,可用于在圖像和視頻流中執(zhí)行行人檢測(cè)。本文我們將使用Opencv自帶的模型實(shí)現(xiàn)對(duì)視頻流中的行人檢測(cè)。感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2021-12-12
Python爬取數(shù)據(jù)保存為Json格式的代碼示例
今天小編就為大家分享一篇關(guān)于Python爬取數(shù)據(jù)保存為Json格式的代碼示例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-04-04
使用Pandas處理時(shí)間序列數(shù)據(jù)Time Series詳解
SQLAlchemy是Python中最流行的ORM(對(duì)象關(guān)系映射)框架之一,它提供了高效且靈活的數(shù)據(jù)庫(kù)操作方式,本文將介紹如何使用SQLAlchemy ORM進(jìn)行數(shù)據(jù)庫(kù)操作,有需要的可以了解下2025-11-11

