最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python如何提取Word文檔中的表格并導(dǎo)出為Excel

 更新時間:2026年05月11日 08:47:44   作者:E-iceblue  
在日常辦公或數(shù)據(jù)處理任務(wù)中,我們經(jīng)常需要將?Word?文檔里分散的表格匯總到?Excel?中進行計算或分析,面對幾十頁甚至上百頁的文檔,手動復(fù)制

在日常辦公或數(shù)據(jù)處理任務(wù)中,我們經(jīng)常需要將 Word 文檔里分散的表格匯總到 Excel 中進行計算或分析。面對幾十頁甚至上百頁的文檔,手動復(fù)制+粘貼不僅效率低下,且極易出現(xiàn)單元格錯位、格式丟失等問題。本文將帶你探索如何利用 Python 實現(xiàn)數(shù)據(jù)從 Word 到 Excel 的自動化遷移。

為什么選擇自動化方案?常見技術(shù)方案對比

在處理 Word 表格導(dǎo)出任務(wù)時,開發(fā)者有多種選擇,比如手動復(fù)制、使用 VBA 等等。我們需要根據(jù)業(yè)務(wù)場景、開發(fā)成本以及處理效果來找到最適合的:

  • 手動復(fù)制粘貼:適用于處理極少量的單一表格。缺點在于無法保持長文本的段落格式,且在處理含有合并單元格的復(fù)雜表格時,數(shù)據(jù)容易發(fā)生偏移。
  • VBA (Visual Basic for Applications):Office 自帶的腳本語言,可以快速將 Word 中的表格導(dǎo)出。雖然無需安裝第三方庫,但其語法陳舊、調(diào)試困難,且高度依賴 Microsoft Office 環(huán)境,無法在沒有安裝 Office 的服務(wù)器或 Linux 環(huán)境上運行,具有一定的設(shè)備局限性。
  • 開源 Python 庫(如 python-docx):這類工具靈活性高,但在處理復(fù)雜格式(如嵌套表格、復(fù)雜的行列跨度映射)時,往往需要編寫大量底層邏輯代碼,開發(fā)成本較高,需要具備一定的編程知識。
  • 專業(yè)類庫(Spire 系列組件):功能強大、API 簡單易懂。它最大的優(yōu)勢在于獨立性(無需安裝 Office)和高集成度。它將復(fù)雜的 Word DOM 結(jié)構(gòu)映射與 Excel 坐標(biāo)系轉(zhuǎn)換進行了底層封裝,開發(fā)者只需通過簡單的 API 調(diào)用,就可以精準(zhǔn)保留原文檔的邏輯結(jié)構(gòu)和文本格式。

方案對比表:

維度手動操作VBA 宏開源 Python 庫Spire 系列專業(yè)組件
執(zhí)行效率極低極高
環(huán)境依賴需人工參與需安裝 Office需配置多種依賴獨立運行(零依賴)
合并單元格支持差(易亂序)較好一般(需自行實現(xiàn)邏輯)完美支持
復(fù)雜場景適配較難易(API 高級封裝)

綜合來看,對于追求高效率和系統(tǒng)穩(wěn)定性的企業(yè)級開發(fā),使用 Spire.Doc for Python 配合 Spire.XLS for Python 是當(dāng)前最優(yōu)的實戰(zhàn)選型。

環(huán)境準(zhǔn)備

在開始編寫腳本之前,請確保你的 Python 環(huán)境中已安裝相關(guān)組件。這兩個庫分別負責(zé)解析 Word 的流式文檔結(jié)構(gòu)和構(gòu)建 Excel 的行列坐標(biāo)體系:

pip install Spire.Doc
pip install Spire.XLS

你可以分別安裝 Word 和 Excel 組件,也可以直接安裝 Spire.Office for Python,它包含了 Spire.Doc for Python,Spire.XLS for Python,Spire.Presentation for Python 和 Spire.PDF for Python。此外所有組件都提供免費版用于小項目或測試。

如何構(gòu)建 Python 導(dǎo)出表格的代碼

為了讓你更清晰地理解 Spire.Doc 和 Spire.XLS 導(dǎo)出 Word 表格的邏輯,我們將整個實現(xiàn)過程拆解為以下核心步驟:

1. 引入必要的類庫

首先,我們需要在腳本開頭引入 Spire 的核心模塊。通過引入 spire.docspire.xls 及其通用常量模塊,我們才能在 Python 中調(diào)用其封裝好的文檔處理引擎,從而實現(xiàn)對 Word DOM 樹的解析和 Excel 工作簿的構(gòu)建。

from spire.doc import *
from spire.doc.common import *
from spire.xls import *
from spire.xls.common import *
import os

2. 初始化對象與加載源文件

分別創(chuàng)建 DocumentWorkbook 對象。隨后,使用 LoadFromFile 方法加載待處理的源 Word 文檔,并調(diào)用 Worksheets.Clear() 移除工作簿中默認生成的空白表,以確保輸出結(jié)果不受默認工作表的干擾。

# 創(chuàng)建 Word 文檔對象并加載文件
document = Document()
document.LoadFromFile("E:/input/項目進度.docx")

# 創(chuàng)建 Excel 工作簿并清空默認工作表
workbook = Workbook()
workbook.Worksheets.Clear()

3. 遍歷 Word 文檔多層級結(jié)構(gòu)

Word 的數(shù)據(jù)存儲具有明顯的層級性(Section > Table > Row > Cell)。我們需要使用嵌套循環(huán)依次遍歷文檔中的 Section (節(jié))Table (表格)。對于每一個發(fā)現(xiàn)的表格,我們通過 workbook.Worksheets.Add() 動態(tài)創(chuàng)建一個工作表,并通過 sheet_index 實現(xiàn)自動命名,確保一表一頁。

sheet_index = 0
for s in range(document.Sections.Count):
    section = document.Sections.get_Item(s)
    tables = section.Tables

    for t in range(tables.Count):
        table = tables.get_Item(t)
        # 動態(tài)創(chuàng)建工作表并遞增索引
        sheet = workbook.Worksheets.Add(f"Table_{sheet_index + 1}")
        # ... (后續(xù)數(shù)據(jù)提取)
        sheet_index += 1

4. 提取單元格文本與格式映射

由于 Word 單元格內(nèi)可能包含多個段落,所以我們需要遍歷 Paragraphs 集合并手動拼接換行符 \n,以保留文本的原始換行結(jié)構(gòu)。最后,通過 Style.WrapText = True 開啟 Excel 的自動換行功能。

# 遍歷行與列
for r in range(table.Rows.Count):
    row = table.Rows.get_Item(r)
    for c in range(row.Cells.Count):
        cell = row.Cells.get_Item(c)
        
        cell_text = ""
        for p in range(cell.Paragraphs.Count):
            paragraph = cell.Paragraphs.get_Item(p)
            cell_text += paragraph.Text.strip() + "\n"

        # 寫入 Excel 坐標(biāo)并設(shè)置換行
        sheet.Range[r + 1, c + 1].Text = cell_text.strip()
        sheet.Range[r + 1, c + 1].Style.WrapText = True

5. 自動化布局優(yōu)化與資源釋放

數(shù)據(jù)填充完成后,利用 AutoFitColumns()AutoFitRows() 方法讓程序自動根據(jù)內(nèi)容調(diào)整列寬和行高。最后釋放內(nèi)存,確保系統(tǒng)資源回收。

完整代碼示例

將上述的步驟整合,即可得到這個高效的 Word 表格導(dǎo)出腳本:

from spire.doc import *
from spire.doc.common import *
from spire.xls import *
from spire.xls.common import *
import os

# 創(chuàng)建 Word 文檔對象并加載文件
document = Document()
document.LoadFromFile("/input/項目進度.docx")

# 創(chuàng)建 Excel 工作簿并刪除默認工作表
workbook = Workbook()
workbook.Worksheets.Clear()

# 遍歷 Word 文檔中的所有節(jié)
sheet_index = 0

for s in range(document.Sections.Count):
    section = document.Sections.get_Item(s)

    # 獲取當(dāng)前節(jié)中的所有表格
    tables = section.Tables

    for t in range(tables.Count):

        # 獲取當(dāng)前表格
        table = tables.get_Item(t)
        # 新建工作表
        sheet = workbook.Worksheets.Add(f"Table_{sheet_index + 1}")

        # 遍歷表格行
        for r in range(table.Rows.Count):
            row = table.Rows.get_Item(r)

            # 遍歷單元格
            for c in range(row.Cells.Count):
                cell = row.Cells.get_Item(c)

                # 提取單元格中的文本
                cell_text = ""
                for p in range(cell.Paragraphs.Count):
                    paragraph = cell.Paragraphs.get_Item(p)
                    cell_text += paragraph.Text.strip() + "\n"

                # 去除末尾換行
                cell_text = cell_text.strip()

                # 寫入 Excel 單元格
                sheet.Range[r + 1, c + 1].Text = cell_text
                # 設(shè)置自動換行
                sheet.Range[r + 1, c + 1].Style.WrapText = True

        # 自動調(diào)整列寬行高
        sheet.AllocatedRange.AutoFitColumns()
        sheet.AllocatedRange.AutoFitRows()
        sheet_index += 1

# 保存為 Excel 文件
workbook.SaveToFile("/output/word表格.xlsx", ExcelVersion.Version2016)
document.Close()
workbook.Dispose()

下面是原始 Word 文檔與提取到的表格的對比示意圖:

結(jié)語

通過 Python 結(jié)合 Spire.Doc 與 Spire.XLS 庫,我們僅需幾十行代碼就能解決復(fù)雜的文檔數(shù)據(jù)提取難題。這種方案不僅保留了原始數(shù)據(jù)的段落結(jié)構(gòu),還通過自動化布局極大提升了結(jié)果文件的可用性。如果你正在處理大批量的文檔自動化工作,不妨嘗試這種更專業(yè)、更穩(wěn)健的開發(fā)路徑。

到此這篇關(guān)于Python如何提取Word文檔中的表格并導(dǎo)出為Excel的文章就介紹到這了,更多相關(guān)Python提取Word表格并導(dǎo)出內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • pycharm 復(fù)制代碼出現(xiàn)空格的解決方式

    pycharm 復(fù)制代碼出現(xiàn)空格的解決方式

    這篇文章主要介紹了pycharm 復(fù)制代碼出現(xiàn)空格的解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • python中相對路徑導(dǎo)入的正確用法及錯誤避免方法

    python中相對路徑導(dǎo)入的正確用法及錯誤避免方法

    這篇文章主要為大家詳細介紹了python中相對路徑導(dǎo)入的正確用法及報錯ImportError: attempted relative import with no known parent package的相關(guān)解決方法,有需要的小伙伴可以了解下
    2025-12-12
  • Python實現(xiàn)電腦壁紙的采集與輪換效果

    Python實現(xiàn)電腦壁紙的采集與輪換效果

    這篇文章主要為大家介紹了如何利用Python實現(xiàn)電腦壁紙的采集以及輪換效果,文中的示例代碼講解詳細,對我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下
    2022-04-04
  • python實現(xiàn)彩票系統(tǒng)

    python實現(xiàn)彩票系統(tǒng)

    這篇文章主要介紹了python實現(xiàn)彩票系統(tǒng),主要采用面向?qū)ο蟮姆椒ǎ畔⒋鎯Ψ绞讲捎胮ickle模塊來進行存儲,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • 在python中獲取div的文本內(nèi)容并和想定結(jié)果進行對比詳解

    在python中獲取div的文本內(nèi)容并和想定結(jié)果進行對比詳解

    今天小編就為大家分享一篇在python中獲取div的文本內(nèi)容并和想定結(jié)果進行對比詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 十個驚艷的Pythonic單行代碼

    十個驚艷的Pythonic單行代碼

    自從用?Python?編寫第一行代碼以來,我就被它的簡單性、出色的可讀性和流行的單行代碼所吸引。在本文中,將為大家介紹和解釋其中的一些單行代碼,希望對大家有所幫助
    2022-12-12
  • Pandas數(shù)據(jù)填充的具體實現(xiàn)

    Pandas數(shù)據(jù)填充的具體實現(xiàn)

    在數(shù)據(jù)分析與預(yù)處理過程中,臟數(shù)據(jù)幾乎不可避免,本文主要介紹了Pandas數(shù)據(jù)填充的具體實現(xiàn),也稱為缺失值處理,使數(shù)據(jù)清洗工作更加高效,感興趣的可以了解一下
    2024-07-07
  • 對Django中的權(quán)限和分組管理實例講解

    對Django中的權(quán)限和分組管理實例講解

    今天小編就為大家分享一篇對Django中的權(quán)限和分組管理實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • python輸出帶有顏色字體的三種方法

    python輸出帶有顏色字體的三種方法

    在使用python運維與開發(fā)的過程中,經(jīng)常需要打印顯示各種信息,海量的信息堆砌在控制臺中,就會導(dǎo)致各種信息都顯示在一起,降低了重要信息的可讀性,這時候如果能給重要的信息加上差異的字體顏色,那么就會更加顯眼,所以本文給大家介紹了python輸出帶有顏色文字的三種方法
    2024-05-05
  • pandas中fillna()函數(shù)填充NaN和None的實現(xiàn)

    pandas中fillna()函數(shù)填充NaN和None的實現(xiàn)

    本文主要介紹了pandas中fillna()函數(shù)填充NaN和None的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01

最新評論

衡水市| 林甸县| 岳阳县| 贵德县| 保康县| 通榆县| 历史| 梧州市| 湖州市| 潍坊市| 井冈山市| 闽侯县| 西华县| 志丹县| 喀什市| 乡城县| 平江县| 无为县| 枣阳市| 南乐县| 黑河市| 武山县| 中阳县| 五台县| 九龙县| 福州市| 通化县| 民乐县| 阜新市| 武功县| 拉萨市| 绵阳市| 伊吾县| 禄丰县| 丰原市| 方山县| 桐庐县| 桓台县| 河间市| 永靖县| 正阳县|