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

我們將編寫(xiě)代碼來(lái)識(shí)別并提取這些數(shù)據(jù)。
from spire.doc import *
from spire.doc.common import *
def extract_tables_from_word(word_file_path):
"""
從Word文檔中提取所有表格數(shù)據(jù)。
返回一個(gè)列表,其中每個(gè)元素代表一個(gè)表格,表格內(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)
控制臺(tái)輸出結(jié)果:

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

代碼解析:
Workbook()實(shí)例用于創(chuàng)建一個(gè)新的Excel工作簿。- 我們遍歷
extracted_data中的每個(gè)Word表格。 - 對(duì)于第一個(gè)表格,我們使用
workbook.Worksheets[0](默認(rèn)的“Sheet1”),并為其重命名;對(duì)于后續(xù)表格,則使用workbook.Worksheets.Add()創(chuàng)建新的工作表。 - 然后,我們遍歷每個(gè)表格的行和單元格數(shù)據(jù),使用
sheet.Range[r_idx + 1, c_idx + 1].Value = cell_value將數(shù)據(jù)寫(xiě)入Excel單元格。注意,Excel的行和列索引是從1開(kāi)始的,所以需要+ 1。 workbook.SaveToFile()方法將工作簿保存為指定的Excel文件,ExcelVersion.Version2016指定了保存的Excel版本。
將上述兩個(gè)部分的Python代碼片段整合在一起,您就擁有了一個(gè)完整的Word表格到Excel轉(zhuǎn)換的自動(dòng)化腳本。
總結(jié)與展望
通過(guò)本文的詳細(xì)教程,我們學(xué)習(xí)了如何利用Python結(jié)合 Spire.Doc for Python 和 Spire.XLS for Python 庫(kù),實(shí)現(xiàn)Word文檔中表格數(shù)據(jù)到Excel表格的高效自動(dòng)化轉(zhuǎn)換。這一過(guò)程不僅省去了繁瑣的手動(dòng)復(fù)制粘貼,顯著提升了數(shù)據(jù)處理效率,還最大程度地減少了人為錯(cuò)誤的可能性。
這種自動(dòng)化能力在多個(gè)領(lǐng)域都具有廣泛的應(yīng)用前景,例如:
- 報(bào)告數(shù)據(jù)整合:從多個(gè)Word報(bào)告中提取關(guān)鍵數(shù)據(jù),匯總到Excel進(jìn)行分析。
- 企業(yè)數(shù)據(jù)遷移:將舊的Word文檔中的結(jié)構(gòu)化數(shù)據(jù)批量導(dǎo)入到新的數(shù)據(jù)庫(kù)或系統(tǒng)。
- 日常辦公自動(dòng)化:簡(jiǎn)化重復(fù)性數(shù)據(jù)錄入和格式轉(zhuǎn)換工作,讓您有更多時(shí)間專注于核心業(yè)務(wù)。
到此這篇關(guān)于Python實(shí)現(xiàn)Word表格自動(dòng)化轉(zhuǎn)為Excel的文章就介紹到這了,更多相關(guān)Python Word表格轉(zhuǎn)Excel內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 使用Python實(shí)現(xiàn)將Excel表格插入到Word文檔中
- Python實(shí)現(xiàn)快速提取Word表格并寫(xiě)入Excel
- 使用python將CSV和Excel表格數(shù)據(jù)導(dǎo)入到Word表格
- 利用Python實(shí)現(xiàn)讀取Word表格計(jì)算匯總并寫(xiě)入Excel
- Python實(shí)現(xiàn)將Word表格嵌入到Excel中
- Python實(shí)現(xiàn)Word表格轉(zhuǎn)成Excel表格的示例代碼
- 使用python批量讀取word文檔并整理關(guān)鍵信息到excel表格的實(shí)例
相關(guān)文章
python?opencv的imread方法無(wú)法讀取圖片問(wèn)題
這篇文章主要介紹了python?opencv的imread方法無(wú)法讀取圖片問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
Python使用memory_profiler診斷Flask應(yīng)用內(nèi)存問(wèn)題的方法技巧
在開(kāi)發(fā) Python Web 應(yīng)用,特別是使用 Flask 框架時(shí),內(nèi)存泄漏和不合理的內(nèi)存使用是常見(jiàn)的性能瓶頸,這些問(wèn)題如果不及早發(fā)現(xiàn)和解決,輕則導(dǎo)致應(yīng)用響應(yīng)變慢,重則引發(fā)服務(wù)器崩潰,所以本文給大家介紹了Python使用memory_profiler診斷Flask應(yīng)用內(nèi)存問(wèn)題的方法技巧2025-07-07
13行python代碼實(shí)現(xiàn)對(duì)微信進(jìn)行推送消息的示例代碼
本文主要介紹了13行python代碼實(shí)現(xiàn)對(duì)微信進(jìn)行推送消息的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
OpenCV+Python幾何變換的實(shí)現(xiàn)示例
這篇文章主要介紹了OpenCV+Python幾何變換的實(shí)現(xiàn)示例,圖像的幾何變換是指將一幅圖像映射到另一幅圖像內(nèi)。有縮放、翻轉(zhuǎn)、仿射變換、透視、重映射等操作。感興趣的可以了解一下2021-03-03
基于windows下pip安裝python模塊時(shí)報(bào)錯(cuò)總結(jié)
今天小編就為大家分享一篇基于windows下pip安裝python模塊時(shí)報(bào)錯(cuò)總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
Python中input輸入與While循環(huán)超詳細(xì)講解
python是一種廣泛使用的解釋型、高級(jí)和通用的編程語(yǔ)言,它支持多種編程范型,包括函數(shù)式、指令式、結(jié)構(gòu)化、面向?qū)ο蠛头瓷涫骄幊痰?這篇文章主要介紹了Python中input輸入與While循環(huán)的相關(guān)資料,需要的朋友可以參考下2025-07-07
如何利用Tensorflow2進(jìn)行貓狗分類識(shí)別
圖像分類是根據(jù)圖像的語(yǔ)義信息將不同類別圖像區(qū)分開(kāi)來(lái),是計(jì)算機(jī)視覺(jué)中重要的基本問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于如何利用Tensorflow2進(jìn)行貓狗分類識(shí)別的相關(guān)資料,需要的朋友可以參考下2022-06-06
OneFlow源碼解析之Eager模式下Tensor存儲(chǔ)管理
這篇文章主要為大家介紹了OneFlow源碼解析之Eager模式下Tensor的存儲(chǔ)管理實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04

