Python高效提取與自動化處理Word表格的完整指南
在日常辦公和自動化處理場景中,Word 文檔(DOC/DOCX)依然是最常見的數(shù)據(jù)載體之一。許多業(yè)務(wù)數(shù)據(jù)、統(tǒng)計報表、合同條款或配置信息,往往以表格的形式存在于 Word 文檔中。當(dāng)我們需要對這些表格數(shù)據(jù)進行進一步處理(如導(dǎo)入數(shù)據(jù)庫、轉(zhuǎn)換為 Excel、生成報表或進行數(shù)據(jù)分析)時,手動復(fù)制粘貼顯然效率低下,也容易出錯。
借助 Python 以及專業(yè)的文檔處理庫,我們可以實現(xiàn) 自動化提取 Word 表格內(nèi)容 ,并將其保存為結(jié)構(gòu)化文本文件或其他格式。本文將詳細(xì)介紹如何使用 Spire.Doc for Python ,從 Word 文檔中逐個提取表格,并將表格內(nèi)容導(dǎo)出為文本文件。
為什么選擇 Spire.Doc for Python
在眾多 Python 文檔處理方案中,Spire.Doc for Python 是一款面向開發(fā)者的專業(yè) Word 文檔處理庫,具備以下顯著優(yōu)勢:
- 無需依賴 Microsoft Word :純 Python 實現(xiàn),適合服務(wù)器和自動化環(huán)境
- 支持完整 Word 結(jié)構(gòu) :段落、表格、頁眉頁腳、樣式等均可訪問
- API 設(shè)計清晰 :面向?qū)ο?,邏輯與 Word 文檔結(jié)構(gòu)高度一致
- 穩(wěn)定可靠 :適合批量處理與企業(yè)級應(yīng)用場景
在提取表格這種涉及文檔層級遍歷的任務(wù)中,Spire.Doc 提供了非常直觀的對象模型,使代碼既清晰又易于維護。
實現(xiàn)思路概述
從 Word 中提取表格,本質(zhì)上是對 Word 文檔結(jié)構(gòu)的逐層遍歷。整體流程如下:
- 加載 Word 文檔
- 遍歷文檔中的所有 Section(節(jié))
- 在每個 Section 中獲取所有表格(Table)
- 遍歷表格中的行(Row)和單元格(Cell)
- 讀取單元格內(nèi)的段落文本
- 按行列結(jié)構(gòu)拼接表格數(shù)據(jù)
- 將每個表格保存為獨立的文本文件
這種方式不僅能夠完整保留表格結(jié)構(gòu),也便于后續(xù)擴展為 CSV、Excel 或數(shù)據(jù)庫導(dǎo)入邏輯。
準(zhǔn)備工作
在開始之前,請確保你的環(huán)境已準(zhǔn)備就緒:
- • Python 3.x
- • 已安裝
spire.doc(Spire.Doc for Python)
安裝方式示例:
pip install spire-doc
安裝完成后,即可在 Python 項目中直接引用相關(guān)模塊。
示例代碼:從 Word 提取表格并保存為文本文件
下面是完整的示例代碼,用于從 Word 文檔中提取所有表格,并將每個表格保存為一個 .txt 文件。
from spire.doc import *
from spire.doc.common import *
# 創(chuàng)建 Document 實例
doc = Document()
# 加載 Word 文檔
doc.LoadFromFile("Input.docx")
# 遍歷文檔中的所有節(jié)(Section)
for s in range(doc.Sections.Count):
# 獲取當(dāng)前節(jié)
section = doc.Sections.get_Item(s)
# 獲取當(dāng)前節(jié)中的所有表格
tables = section.Tables
# 遍歷當(dāng)前節(jié)中的表格
for i in range(0, tables.Count):
# 獲取表格對象
table = tables.get_Item(i)
# 用于存儲當(dāng)前表格數(shù)據(jù)的字符串
tableData = ''
# 遍歷表格中的所有行
for j in range(0, table.Rows.Count):
# 遍歷當(dāng)前行中的所有單元格
for k in range(0, table.Rows.get_Item(j).Cells.Count):
# 獲取單元格對象
cell = table.Rows.get_Item(j).Cells.get_Item(k)
# 用于存儲單元格中的文本內(nèi)容
cellText = ''
# 遍歷單元格中的所有段落
for para in range(cell.Paragraphs.Count):
paragraphText = cell.Paragraphs.get_Item(para).Text
cellText += (paragraphText + ' ')
# 將單元格文本追加到表格數(shù)據(jù)字符串中
tableData += cellText
# 如果不是最后一個單元格,則添加制表符作為列分隔符
if k < table.Rows.get_Item(j).Cells.Count - 1:
tableData += '\t'
# 當(dāng)前行結(jié)束后,添加換行符
tableData += '\n'
# 將表格數(shù)據(jù)保存為文本文件
with open(f'output/Tables/WordTable_{s+1}_{i+1}.txt', 'w', encoding='utf-8') as f:
f.write(tableData)
# 關(guān)閉文檔,釋放資源
doc.Close()
代碼詳解
下面我們對核心代碼邏輯進行逐步解析,幫助你更好地理解其工作原理。
1. 加載 Word 文檔
doc = Document()
doc.LoadFromFile("Input.docx")
這里創(chuàng)建了一個 Document 實例,并加載指定路徑下的 Word 文件。Document 是 Spire.Doc 中表示整個 Word 文檔的核心對象。
2. 遍歷文檔中的 Section
for s in range(doc.Sections.Count):
section = doc.Sections.get_Item(s)
在 Word 中,文檔可能由多個 Section 組成(例如分頁、不同頁眉頁腳設(shè)置)。為了不遺漏任何表格,我們需要遍歷所有 Section。
3. 獲取并遍歷表格
tables = section.Tables
for i in range(0, tables.Count):
table = tables.get_Item(i)
每個 Section 都可能包含多個表格。通過 section.Tables 可以直接獲取該節(jié)中的所有表格對象。
4. 遍歷行和單元格
for j in range(0, table.Rows.Count):
for k in range(0, table.Rows.get_Item(j).Cells.Count):
cell = table.Rows.get_Item(j).Cells.get_Item(k)
表格由行和單元格組成。這里采用雙層循環(huán),確保按“行 → 列”的順序讀取數(shù)據(jù),從而保持原有表格結(jié)構(gòu)。
5. 讀取單元格中的段落文本
for para in range(cell.Paragraphs.Count):
paragraphText = cell.Paragraphs.get_Item(para).Text
cellText += (paragraphText + ' ')
一個單元格中可能包含多個段落(例如手動換行)。因此,需要遍歷 cell.Paragraphs,并將所有段落文本拼接起來,確保內(nèi)容完整。
6. 拼接表格數(shù)據(jù)
tableData += cellText tableData += '\t' tableData += '\n'
- • 使用 制表符(\t) 分隔列
- • 使用 換行符(\n) 分隔行
這種格式非常適合后續(xù)轉(zhuǎn)換為 Excel、CSV,或直接導(dǎo)入數(shù)據(jù)庫。
7. 保存為文本文件
with open(f'output/Tables/WordTable_{s+1}_{i+1}.txt', 'w', encoding='utf-8') as f:
f.write(tableData)
每個表格都會被單獨保存為一個文本文件,文件名中包含 Section 和 Table 的索引,便于區(qū)分來源。
應(yīng)用場景拓展
基于本文示例代碼,你可以輕松擴展到更多實際應(yīng)用場景,例如:
- 將提取的表格數(shù)據(jù)轉(zhuǎn)換為 CSV 或 Excel
- 自動解析 Word 報表并導(dǎo)入 數(shù)據(jù)庫系統(tǒng)
- 批量處理合同或業(yè)務(wù)文檔中的表格信息
- 與數(shù)據(jù)分析或 BI 工具進行對接
Spire.Doc for Python 提供的豐富 API,使這些擴展變得非常自然。
總結(jié)
本文介紹了如何使用 Spire.Doc for Python 從 Word 文檔中自動提取表格內(nèi)容,并將其保存為文本文件。通過對 Word 文檔結(jié)構(gòu)(Section、Table、Row、Cell、Paragraph)的逐層遍歷,我們能夠完整、準(zhǔn)確地獲取表格數(shù)據(jù),并為后續(xù)的數(shù)據(jù)處理和自動化流程打下堅實基礎(chǔ)。
如果你正在尋找一種 穩(wěn)定、高效、無需依賴 Office 環(huán)境 的 Word 表格提取方案,那么 Spire.Doc for Python 無疑是一個值得考慮的選擇。
以上就是Python高效提取與自動化處理Word表格的完整指南的詳細(xì)內(nèi)容,更多關(guān)于Python Word處理的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
計算機二級python學(xué)習(xí)教程(2) python語言基本語法元素
這篇文章主要為大家詳細(xì)介紹了計算機二級python學(xué)習(xí)教程的第2篇,Python語言基本語法元素,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-05-05
用python寫PDF轉(zhuǎn)換器的實現(xiàn)
這篇文章主要介紹了用python寫PDF轉(zhuǎn)換器的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
Python FTP文件定時自動下載實現(xiàn)過程解析
這篇文章主要介紹了Python FTP文件定時自動下載實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-11-11
詳解PyCharm使用pyQT5進行GUI開發(fā)的基本流程
本文主要介紹了PyCharm使用pyQT5進行GUI開發(fā)的基本流程,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10
Python pyinotify日志監(jiān)控系統(tǒng)處理日志的方法
這篇文章主要介紹了Python pyinotify日志監(jiān)控系統(tǒng)處理日志的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03

