Python實現Word表格自動化轉為Excel
在日常工作中,我們經常需要處理各種格式的數據。Word文檔以其靈活的排版能力,常用于報告和文檔撰寫,但當這些文檔中包含大量表格數據時,將其用于進一步的數據分析或統(tǒng)計時,手動復制粘貼到Excel無疑是一項耗時且易出錯的任務。想象一下,面對幾十甚至上百個Word文檔中的表格,這種重復性工作效率低下且令人沮喪。
幸運的是,Python作為一種強大的自動化工具,能夠完美解決這一痛點。本文將深入探討如何利用Python,結合 Spire.Doc for Python 和 Spire.XLS for Python 這兩個庫,高效、準確地將Word文檔中的表格數據提取并轉換為可編輯的Excel表格。通過自動化這一過程,您將能夠顯著提升工作效率,減少人為錯誤,并專注于更有價值的數據洞察。
環(huán)境準備與庫安裝
在開始之前,我們需要確保Python環(huán)境已正確配置,并安裝所需的庫。本文假設您已經安裝了Python 3.x 版本。
首先,打開您的命令行工具(如CMD、PowerShell或Terminal),然后使用pip命令安裝Spire.Doc for Python和Spire.XLS for Python。這兩個庫是本次任務的核心,Spire.Doc for Python負責讀取和解析Word文檔內容,特別是識別和提取表格數據;而Spire.XLS for Python則用于創(chuàng)建、寫入和保存Excel文件。
pip install Spire.Doc pip install Spire.XLS
安裝完成后,您就可以在Python腳本中導入和使用它們了。
Word表格讀取與數據提取
數據提取是整個轉換過程的關鍵一步。我們將使用Spire.Doc for Python來加載Word文檔,并遍歷文檔中的所有表格,逐一提取其內容。
以下是一個示例Word文檔:

我們將編寫代碼來識別并提取這些數據。
from spire.doc import *
from spire.doc.common import *
def extract_tables_from_word(word_file_path):
"""
從Word文檔中提取所有表格數據。
返回一個列表,其中每個元素代表一個表格,表格內部是行的列表,行內部是單元格內容的列表。
"""
document = Document()
document.LoadFromFile(word_file_path)
all_tables_data = []
# 遍歷文檔中的所有節(jié)
for sec_index in range(document.Sections.Count):
section = document.Sections.get_Item(sec_index)
# 遍歷節(jié)中的所有表格
for table_index in range(section.Tables.Count):
table = section.Tables.get_Item(table_index)
current_table_data = []
# 遍歷表格中的所有行
for row_index in range(table.Rows.Count):
table_row = table.Rows.get_Item(row_index)
current_row_data = []
# 遍歷行中的所有單元格
for cell_index in range(table_row.Cells.Count):
table_cell = table_row.Cells.get_Item(cell_index)
# 提取單元格文本,并保持單元格內原有段落結構
paras = [table_cell.Paragraphs.get_Item(i).Text.rstrip('\r\n')
for i in range(table_cell.Paragraphs.Count)
if table_cell.Paragraphs.get_Item(i).Text.strip()]
current_cell_data = "\n".join(paras)
current_row_data.append(current_cell_data)
current_table_data.append(current_row_data)
all_tables_data.append(current_table_data)
document.Close()
return all_tables_data
# 假設您的Word文檔名為 'input.docx' 并且在當前目錄下
word_file = "input.docx"
extracted_data = extract_tables_from_word(word_file)
# 打印提取的數據以供驗證
for i, table_data in enumerate(extracted_data):
print(f"--- Table {i + 1} Data ---")
for row in table_data:
print(row)
控制臺輸出結果:

代碼解析:
Document()實例用于加載Word文檔。document.LoadFromFile()方法加載指定路徑的Word文檔。- 我們通過
document.Sections迭代文檔中的所有節(jié),再通過section.Tables迭代每個節(jié)中的所有表格。 - 對于每個表格,我們進一步迭代
table.Rows獲取行,然后迭代row.Cells獲取單元格。 cell.Text.strip()用于獲取單元格的純文本內容,并移除可能存在的額外空白字符。- 所有提取的數據都存儲在一個嵌套列表中,
all_tables_data是一個包含所有表格數據的列表,每個表格數據又是一個包含行數據的列表,行數據再包含單元格數據的列表。
數據寫入Excel與文件保存
提取到數據后,下一步就是將其寫入Excel文件。我們將使用Spire.XLS for Python來創(chuàng)建新的Excel工作簿,并將提取的數據逐一寫入工作表。
from spire.xls import *
from spire.xls.common import *
def write_data_to_excel(extracted_data, excel_file_path):
"""
將提取的表格數據寫入Excel文件。
每個Word表格將寫入Excel的一個新工作表。
"""
workbook = Workbook()
# 清楚默認工作表
workbook.Worksheets.Clear()
# 如果沒有提取到數據,則不創(chuàng)建Excel文件
if not extracted_data:
print("沒有從Word文檔中提取到任何表格數據。")
return
# 遍歷所有提取的表格數據
for i, table_data in enumerate(extracted_data):
# 為每個表格創(chuàng)建一個新的工作表
sheet = workbook.Worksheets.Add(f"Table_{i + 1}")
# 將表格數據寫入工作表
for r_idx, row_data in enumerate(table_data):
for c_idx, cell_value in enumerate(row_data):
# Excel的行和列索引從1開始
sheet.Range[r_idx + 1, c_idx + 1].Value = cell_value
# (可選)應用基本表格格式
# 如自動對齊列寬
sheet.AllocatedRange.AutoFitColumns()
# 保存Excel文件
workbook.SaveToFile(excel_file_path, ExcelVersion.Version2016)
workbook.Dispose()
print(f"數據已成功寫入到 {excel_file_path}")
# 調用函數將數據寫入Excel
excel_file = "output.xlsx"
write_data_to_excel(extracted_data, excel_file)
寫入效果:

代碼解析:
Workbook()實例用于創(chuàng)建一個新的Excel工作簿。- 我們遍歷
extracted_data中的每個Word表格。 - 對于第一個表格,我們使用
workbook.Worksheets[0](默認的“Sheet1”),并為其重命名;對于后續(xù)表格,則使用workbook.Worksheets.Add()創(chuàng)建新的工作表。 - 然后,我們遍歷每個表格的行和單元格數據,使用
sheet.Range[r_idx + 1, c_idx + 1].Value = cell_value將數據寫入Excel單元格。注意,Excel的行和列索引是從1開始的,所以需要+ 1。 workbook.SaveToFile()方法將工作簿保存為指定的Excel文件,ExcelVersion.Version2016指定了保存的Excel版本。
將上述兩個部分的Python代碼片段整合在一起,您就擁有了一個完整的Word表格到Excel轉換的自動化腳本。
總結與展望
通過本文的詳細教程,我們學習了如何利用Python結合 Spire.Doc for Python 和 Spire.XLS for Python 庫,實現Word文檔中表格數據到Excel表格的高效自動化轉換。這一過程不僅省去了繁瑣的手動復制粘貼,顯著提升了數據處理效率,還最大程度地減少了人為錯誤的可能性。
這種自動化能力在多個領域都具有廣泛的應用前景,例如:
- 報告數據整合:從多個Word報告中提取關鍵數據,匯總到Excel進行分析。
- 企業(yè)數據遷移:將舊的Word文檔中的結構化數據批量導入到新的數據庫或系統(tǒng)。
- 日常辦公自動化:簡化重復性數據錄入和格式轉換工作,讓您有更多時間專注于核心業(yè)務。
到此這篇關于Python實現Word表格自動化轉為Excel的文章就介紹到這了,更多相關Python Word表格轉Excel內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

