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

我們將編寫代碼來識別并提取這些數(shù)據(jù)。
from spire.doc import *
from spire.doc.common import *
def extract_tables_from_word(word_file_path):
"""
從Word文檔中提取所有表格數(shù)據(jù)。
返回一個列表,其中每個元素代表一個表格,表格內(nèi)部是行的列表,行內(nèi)部是單元格內(nèi)容的列表。
"""
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)
# 提取單元格文本,并保持單元格內(nèi)原有段落結(jié)構(gòu)
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
# 假設(shè)您的Word文檔名為 'input.docx' 并且在當(dāng)前目錄下
word_file = "input.docx"
extracted_data = extract_tables_from_word(word_file)
# 打印提取的數(shù)據(jù)以供驗(yàn)證
for i, table_data in enumerate(extracted_data):
print(f"--- Table {i + 1} Data ---")
for row in table_data:
print(row)
控制臺輸出結(jié)果:

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

代碼解析:
Workbook()實(shí)例用于創(chuàng)建一個新的Excel工作簿。- 我們遍歷
extracted_data中的每個Word表格。 - 對于第一個表格,我們使用
workbook.Worksheets[0](默認(rèn)的“Sheet1”),并為其重命名;對于后續(xù)表格,則使用workbook.Worksheets.Add()創(chuàng)建新的工作表。 - 然后,我們遍歷每個表格的行和單元格數(shù)據(jù),使用
sheet.Range[r_idx + 1, c_idx + 1].Value = cell_value將數(shù)據(jù)寫入Excel單元格。注意,Excel的行和列索引是從1開始的,所以需要+ 1。 workbook.SaveToFile()方法將工作簿保存為指定的Excel文件,ExcelVersion.Version2016指定了保存的Excel版本。
將上述兩個部分的Python代碼片段整合在一起,您就擁有了一個完整的Word表格到Excel轉(zhuǎn)換的自動化腳本。
總結(jié)與展望
通過本文的詳細(xì)教程,我們學(xué)習(xí)了如何利用Python結(jié)合 Spire.Doc for Python 和 Spire.XLS for Python 庫,實(shí)現(xiàn)Word文檔中表格數(shù)據(jù)到Excel表格的高效自動化轉(zhuǎn)換。這一過程不僅省去了繁瑣的手動復(fù)制粘貼,顯著提升了數(shù)據(jù)處理效率,還最大程度地減少了人為錯誤的可能性。
這種自動化能力在多個領(lǐng)域都具有廣泛的應(yīng)用前景,例如:
- 報告數(shù)據(jù)整合:從多個Word報告中提取關(guān)鍵數(shù)據(jù),匯總到Excel進(jìn)行分析。
- 企業(yè)數(shù)據(jù)遷移:將舊的Word文檔中的結(jié)構(gòu)化數(shù)據(jù)批量導(dǎo)入到新的數(shù)據(jù)庫或系統(tǒng)。
- 日常辦公自動化:簡化重復(fù)性數(shù)據(jù)錄入和格式轉(zhuǎn)換工作,讓您有更多時間專注于核心業(yè)務(wù)。
到此這篇關(guān)于Python實(shí)現(xiàn)Word表格自動化轉(zhuǎn)為Excel的文章就介紹到這了,更多相關(guān)Python Word表格轉(zhuǎn)Excel內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言中printf()函數(shù)的全面介紹及用法(簡單易懂)
在C語言中,printf()是常用的輸出函數(shù),包含在頭文件中,它使用格式控制字符串,其中包括格式字符、轉(zhuǎn)義字符和普通字符,格式字符以"%"開頭,文中將用法介紹的非常詳細(xì),需要的朋友可以參考下2024-09-09
Python設(shè)置在shell腳本中自動補(bǔ)全功能的方法
今天小編就為大家分享一篇Python設(shè)置在shell腳本中自動補(bǔ)全功能的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06
PyTorch一小時掌握之神經(jīng)網(wǎng)絡(luò)氣溫預(yù)測篇
這篇文章主要介紹了PyTorch一小時掌握之神經(jīng)網(wǎng)絡(luò)氣溫預(yù)測篇,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09
使用Python操作Redis所有數(shù)據(jù)類型的方法
當(dāng)今互聯(lián)網(wǎng)時代,數(shù)據(jù)處理已經(jīng)成為了一個非常重要的任務(wù),而Redis作為一款高性能的NoSQL數(shù)據(jù)庫,越來越受到了廣大開發(fā)者的喜愛,本篇博客將介紹如何使用Python操作Redis的所有類型,以及一些高級用法,需要的朋友可以參考下2023-11-11
Python通用唯一標(biāo)識符模塊uuid使用案例詳解
Python?uuid模塊用于生成128位全局唯一標(biāo)識符,支持UUID1-5版本,適用于分布式系統(tǒng)、數(shù)據(jù)庫主鍵等場景,需注意隱私、碰撞概率及存儲優(yōu)化,推薦使用uuid4,優(yōu)化方法包括批量生成和緩存,本文給大家介紹Python通用唯一標(biāo)識符模塊uuid使用,感興趣的朋友一起看看吧2025-07-07
使用Python進(jìn)行PowerPoint幻燈片背景設(shè)置
設(shè)置PowerPoint幻燈片背景不僅能夠增強(qiáng)演示文稿的視覺吸引力,還能幫助傳達(dá)特定的情感或信息,本文將介紹如何使用Python為PowerPoint幻燈片設(shè)置純色、漸變及圖片背景,有需要的可以參考下2024-11-11
python編程學(xué)習(xí)np.float 被刪除的問題解析
這篇文章主要為大家介紹了python編程學(xué)習(xí)np.float 被刪除的問題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02

