1. 程式人生 > 其它 >python (win32com) 批量刪除 word (docx, doc) 中所有頁首、頁尾 (Word.Application, Word.Basic)

python (win32com) 批量刪除 word (docx, doc) 中所有頁首、頁尾 (Word.Application, Word.Basic)

技術標籤:python自動化辦公pythonwindows辦公軟體doc批量替換

之前看網上的資料,大部分都是用 python-docx 庫來刪除 word 文件的頁首、頁尾:

header.is_linked_to_previous = True

但是實際使用下來,問題不少,也不能保證所有頁面(尤其是第一頁)的頁首、頁尾都被有效清除。
於是我想使用 win32com ,但網上的資料實在太少。經過一番探索,我得出了下面的方法:

首先安裝:

pip install pypiwin32

編寫 python 程式碼:

import os
from win32com import client

# 用來進行 word 文件的開啟、儲存、關閉操作
word = client.DispatchEx("Word.Application") # 刪除頁首、頁尾的核心 wb = client.DispatchEx("Word.Basic") def removeHeaderFooter(file): ''' Para: file: word文件路徑,需要包括檔名、拓展名 ''' # 開啟文件,注意引數要是絕對路徑,可以使用 os 庫的方法進行轉化 wordDoc = word.Documents.Open(os.path.abspath(file),
ReadOnly=0) # 呼叫 Word.Basic 來進行操作 # 注意後面沒有表示函式的括號 wb.RemoveHeader wb.RemoveFooter # 儲存檔案,此外還可以為 SaveAs 函式增加 FileFormat=17 引數來儲存為 pdf 檔案(拓展名需要更改一下) wordDoc.SaveAs(os.path.abspath(file)) # 注意,一定要關閉檔案,因此建議將上面內容用 try 包起來,確保檔案關閉 # 如果沒有正確關閉,則下次無法正常開啟 # 如有意外,可以將工作管理員中的 WINWORD 程序關閉,並將資料夾內的隱藏檔案 ~$... .docx 刪掉(可能是隱藏的)
wordDoc.Close() if __name__ == '__main__': removeHeaderFooter('test.docx')

如果需要遍歷資料夾內所有 word 檔案:

# 遍歷資料夾
for name in os.listdir(path):
    # 判斷是檔案,且是 word 檔案
    if os.path.isfile(os.path.join(path, name)) and name.split('.')[-1].lower() in ['doc', 'docx']:
        print(f'{name}:removing header and footer...')
        removeHeaderFooter(os.path.join(path, name))

本文原創,轉載請註明:https://blog.csdn.net/swkfk/article/details/113856618