Python使用docx模塊編輯Word文檔
前言
該模塊可以通過(guò)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)容
通過(guò)遍歷 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)容——>然后賦值——>保存(沒(mé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í)慣不一樣,他們并沒(méi)有邏輯上的關(guān)系,而只是單純的坐標(biāo)來(lái)對(duì)應(yīng))

2、記住這個(gè)坐標(biāo)我們后面就可以對(duì)所有的表進(jìn)行修改:
注意下面代碼中的 cell(2,1) 中的坐標(biāo)就是上面我們找到的坐標(biāo),通過(guò)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)文章
詳解Django框架中用context來(lái)解析模板的方法
這篇文章主要介紹了詳解Django框架中用context來(lái)解析模板的方法,Django是重多高人氣Python框架中最為著名的一個(gè),需要的朋友可以參考下2015-07-07
Python預(yù)測(cè)分詞的實(shí)現(xiàn)
本文將結(jié)合實(shí)例代碼,介紹Python預(yù)測(cè)分詞的實(shí)現(xiàn),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06
Python+Tkinter打造簽名設(shè)計(jì)工具
這篇文章主要為大家分享如何利用Python Tkinter庫(kù)制作帶圖形界面的一個(gè)簽名設(shè)計(jì)工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-04-04
Python數(shù)據(jù)可視化編程通過(guò)Matplotlib創(chuàng)建散點(diǎn)圖代碼示例
這篇文章主要介紹了Python數(shù)據(jù)可視化編程通過(guò)Matplotlib創(chuàng)建散點(diǎn)圖實(shí)例,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12
Python基礎(chǔ)學(xué)習(xí)之模塊的安裝和卸載
其實(shí)現(xiàn)在還是有很多剛開(kāi)始學(xué)習(xí)的小伙伴,會(huì)遇到模塊不會(huì)安裝的情況,或者一遇到報(bào)錯(cuò)就懵了,這樣就很耽誤我們的學(xué)習(xí)進(jìn)度。所以,今天我們就來(lái)了解一下Python幾種安裝模塊的方法吧2022-09-09

