Python辦公神器:教你使用Python批量修改Word樣式
Word文檔是我們日常辦公中經常使用的一種文件格式,它可以用來編寫各種文檔,如報告、論文、簡歷等。但是,有時候我們需要對多個Word文檔進行統一的樣式修改,比如修改字體、字號、顏色、對齊方式等。如果手動一個一個修改,那么會非常耗時和繁瑣。有沒有一種方法可以讓我們快速地批量修改Word樣式呢?
本教程將向你介紹如何使用Document庫來批量修改Word樣式。
演示例子如下,假設我們有一個文件夾,里面存放了多個財務報告的Word文檔,我們需要將這些文檔中包含“利潤”這個詞的文字塊都改成紅色加粗的樣式,并保存到另一個文件夾中。
步驟一:導入所需模塊
首先,我們需要導入所需的模塊,分別是os、glob和docx。如果你沒有安裝過docx模塊,你可以在命令行中輸入以下命令來安裝:
pip install python-docx
然后,在Python代碼中輸入以下語句來導入模塊:
import os
import glob
from docx import Document
步驟二:創建一個空文件夾
接下來,我們需要創建一個空文件夾,用于存放修改后的財務報告,避免直接對原文件修改。我們可以使用os模塊中的mkdir()函數來創建一個空文件夾,比如創建一個名為“new_reports”的文件夾:
os.mkdir('new_reports')
如果你已經有了一個空文件夾,或者想要使用其他名稱的文件夾,你可以跳過這一步。
步驟三:獲取目標文件夾下的所有Word路徑
然后,我們需要獲取目標文件夾下的所有Word路徑,也就是原始財務報告所在的文件夾。我們可以使用glob模塊中的glob()函數來獲取指定目錄下符合特定規則的文件路徑,比如獲取所有以.docx結尾的文件路徑:
word_paths = glob.glob('reports/*.docx')
這里,我們假設原始財務報告所在的文件夾是“reports”,你可以根據你的實際情況修改。glob()函數會返回一個列表,列表中的每個元素都是一個文件路徑,比如:
['reports/report1.docx', 'reports/report2.docx', 'reports/report3.docx']
步驟四:利用docx模塊對每個Word文檔遍歷,并獲取包含特定詞的文字塊
接下來,我們需要利用docx模塊對每個Word文檔遍歷,并獲取包含特定詞的文字塊。我們可以使用Document類來創建一個文檔對象,然后使用paragraphs屬性來獲取文檔中的所有段落,再使用runs屬性來獲取段落中的所有文字塊。文字塊是Word文檔中具有相同樣式的一段文字,比如一個單詞、一個句子或者一個標題等。我們可以使用text屬性來獲取文字塊中的文本內容,然后使用in運算符來判斷是否包含特定詞,比如“利潤”。我們可以使用一個循環來遍歷每個Word文檔,然后再使用兩個嵌套循環來遍歷每個段落和每個文字塊,代碼如下:
for word_path in word_paths: # 遍歷每個Word文檔
document = Document(word_path) # 創建一個文檔對象
for paragraph in document.paragraphs: # 遍歷每個段落
for run in paragraph.runs: # 遍歷每個文字塊
if '利潤' in run.text: # 判斷是否包含特定詞
# 對文字塊進行樣式修改
步驟五:對文字塊進行樣式修改
最后,我們需要對文字塊進行樣式修改,比如修改字體、字號、顏色、對齊方式等。我們可以使用font屬性來獲取文字塊的字體對象,然后使用各種屬性和方法來修改樣式,比如:
- name屬性:修改字體名稱,比如“宋體”、“微軟雅黑”等。
- size屬性:修改字號大小,單位是磅(Pt),比如20磅、24磅等。
- bold屬性:修改是否加粗,True表示加粗,False表示不加粗。
- color.rgb屬性:修改顏色,需要傳入一個RGB顏色值,比如紅色是RGBColor(255, 0, 0)。
- alignment屬性:修改對齊方式,需要傳入一個枚舉值,比如居中是WD_ALIGN_PARAGRAPH.CENTER。
在本例中,我們需要將包含“利潤”的文字塊都改成紅色加粗的樣式,所以我們可以這樣寫:
from docx.shared import RGBColor # 導入RGB顏色類
from docx.enum.text import WD_ALIGN_PARAGRAPH # 導入對齊方式枚舉類
# 省略前面的代碼
if '利潤' in run.text: # 判斷是否包含特定詞
run.font.name = '微軟雅黑' # 修改字體名稱為微軟雅黑
run.font.size = 24 # 修改字號大小為24磅
run.font.bold = True # 修改為加粗
run.font.color.rgb = RGBColor(255, 0, 0) # 修改顏色為紅色
paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER # 修改對齊方式為居中
步驟六:保存修改后的文檔到新文件夾
最后一步,我們需要保存修改后的文檔到新文件夾中。我們可以使用save()方法來保存文檔對象,并傳入一個新的文件路徑,比如使用原文件名加上一個后綴,如“report1_new.docx”:
# 省略前面的代碼
new_word_path = 'new_reports/' + word_path.split('/')[-1].split('.')[0] + '_new.docx' # 生成新的文件路徑
document.save(new_word_path) # 保存文檔對象
這樣,我們就完成了對一個Word文檔的樣式修改,并保存到新文件夾中。我們可以使用另一個循環來遍歷所有的Word文檔,并重復上述步驟,代碼如下:
for word_path in word_paths: # 遍歷每個Word文檔
document = Document(word_path) # 創建一個文檔對象
for paragraph in document.paragraphs: # 遍歷每個段落
for run in paragraph.runs: # 遍歷每個文字塊
if '利潤' in run.text: # 判斷是否包含特定詞
run.font.name = '微軟雅黑' # 修改字體名稱為微軟雅黑
run.font.size = 24 # 修改字號大小為24磅
run.font.bold = True # 修改為加粗
run.font.color.rgb = RGBColor(255, 0, 0) # 修改顏色為紅色
paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER # 修改對齊方式為居中
new_word_path = 'new_reports/' + word_path.split('/')[-1].split('.')[0] + '_new.docx' # 生成新的文件路徑
document.save(new_word_path) # 保存文檔對象
總結
本教程介紹了如何使用Python的Document庫來批量修改Word樣式。我們通過一個實際的例子來演示了如何使用os、glob和docx模塊來實現這個功能。通過使用Python,我們可以節省大量的時間和精力,提高辦公效率。當然,這只是Document庫的一個簡單應用,它還有很多其他的功能和用法,你可以參考官方文檔來學習更多。