欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實現(xiàn)批量提取Word文檔表格數(shù)據

 更新時間:2024年03月12日 07:56:23   作者:Eiceblue  
在大數(shù)據處理與信息抽取領域中,Word文檔是各類機構和個人普遍采用的一種信息存儲格式,本文將介紹如何使用Python實現(xiàn)對Word文檔中表格的提取,感興趣的可以了解下

在大數(shù)據處理與信息抽取領域中,Word文檔是各類機構和個人普遍采用的一種信息存儲格式,其中包含了大量的結構化和半結構化數(shù)據,如各類報告、調查問卷結果、項目計劃等。這些文檔中的表格往往承載了關鍵的數(shù)據信息,如統(tǒng)計數(shù)據、項目進度、研究成果等。然而,手動從大量的Word文檔中逐一摘取并整理這些表格不僅耗時費力,且易出錯,無法滿足高效、準確的數(shù)據利用需求。因此,利用編程實現(xiàn)批量提取Word文檔中的表格成為了一種必要且高效的解決方案。Python作為一種功能強大、易學易用的編程語言,可以有效地實現(xiàn)這一目標,極大地提升數(shù)據采集和預處理的工作效率,同時也為后續(xù)的數(shù)據分析和應用提供強有力的支持。本文將介紹如何使用Python實現(xiàn)對Word文檔中表格的提取。

本文所使用的方法需要用到Spire.Doc for Python,可從官網獲取。如果是將表格保存到Excel工作表,則還需要用到Spire.XLS for Python。

提取Word文檔表格并保存為Excel工作表

讀取Word文檔中的表格并寫入Excel工作簿需要同時用到這兩個庫。以下是操作步驟:

創(chuàng)建 Document 和 Workbook 對象。

使用 Document 類的 LoadFromFile() 方法載入指定路徑下的 Word 文檔。

清除 Workbook 中的所有工作表。

遍歷加載的 Word 文檔中的所有節(jié)(Sections)。

在每個節(jié)中,遍歷其包含的所有表格(Tables)。

對于每一個表格,創(chuàng)建一個新的 Excel 工作表,并根據表格索引為其命名。

遍歷表格中的每一行(Rows),并獲取當前行對象。

再次遍歷該行中的所有單元格(Cells),獲取單元格對象。

對于每個單元格,將其包含的段落內容合并為一個字符串(cellText)。

使用 Workbook 的工作表對象的 SetCellValue() 方法將合并后的單元格文本內容寫入到對應的工作表中。

完成所有表格數(shù)據的寫入后,使用 Workbook 的 SaveToFile() 方法將 Excel 數(shù)據保存到指定路徑。

代碼示例:

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

# 創(chuàng)建Document對象
doc = Document()

# 載入Word文檔
doc.LoadFromFile("示例.docx")

# 創(chuàng)建Workbook對象
wb = Workbook()
wb.Worksheets.Clear()

# 遍歷文檔中的節(jié)
for i in range(doc.Sections.Count):
    # 獲取一個節(jié)
    section = doc.Sections.get_Item(i)
    # 遍歷節(jié)中的表格
    for j in range(section.Tables.Count):
        # 獲取一個表格
        table = section.Tables.get_Item(j)
        # 創(chuàng)建一個工作表
        ws = wb.Worksheets.Add(f"表 {(j + 1)}")
        # 將表格數(shù)據寫入工作表
        for row in range(table.Rows.Count):
            # 獲取一行
            tableRow = table.Rows.get_Item(row)
            # 遍歷一行中的單元格
            for cell in range(tableRow.Cells.Count):
                # 獲取一個單元格
                tableCell = tableRow.Cells.get_Item(cell)
                # 獲取單元格的內容
                cellText = ""
                for paragraph in range(tableCell.Paragraphs.Count):
                    paragraph = tableCell.Paragraphs.get_Item(paragraph)
                    cellText = cellText + paragraph.Text
                # 將單元格的內容寫入工作表
                ws.SetCellValue(row + 1, cell + 1, cellText)

wb.SaveToFile("output/Word表格寫入Excel.xlsx", FileFormat.Version2016)
doc.Close()
wb.Dispose()

提取結果

提取Word文檔表格并保存為CSV文件

CSV文件以文本的文件的形式儲存表格數(shù)據,因此,我們可以直接使用Spire.Doc for Python提取Word文檔中的表格數(shù)據并寫入到CSV文件。以下是操作步驟:

創(chuàng)建 Document 對象。

使用 Document 類的 LoadFromFile() 方法載入指定路徑下的 Word 文檔。

遍歷載入的 Word 文檔中的所有節(jié)(Sections)。

在每個節(jié)內,進一步遍歷其包含的所有表格(Tables)。

對于每個表格,生成對應的 CSV 文件名,并以寫模式打開這個文件,設置編碼為 UTF-8 并開啟新行模式。

創(chuàng)建 csv.writer 對象用于寫入 CSV 文件內容。

根據表格的列數(shù)動態(tài)生成 CSV 文件的標題行(列名),并用 writerow() 方法寫入到CSV文件中。

遍歷當前表格的每一行(Rows),獲取當前行對象。

對于每一行中的每個單元格,只提取第一個段落的文本內容,形成一行的數(shù)據列表。

使用 csv.writer 對象的 writerow() 方法將這一行的數(shù)據列表寫入到對應的 CSV 文件中。

在完成一個表格的所有數(shù)據寫入后,關閉已打開的 CSV 文件。

繼續(xù)處理下一個表格,直至遍歷完所有表格。

import csv
from spire.doc import *

# 創(chuàng)建Document對象
doc = Document()

# 載入Word文檔
doc.LoadFromFile("示例.docx")

# 遍歷文檔中的節(jié)
for i in range(doc.Sections.Count):
    # 獲取一個節(jié)
    section = doc.Sections.get_Item(i)
    # 遍歷節(jié)中的表格
    for j in range(section.Tables.Count):
        # 獲取一個表格
        table = section.Tables.get_Item(j)
        
        # 創(chuàng)建CSV文件名并打開文件
        csv_file_name = f"output/CSV/表_{(j + 1)}.csv"
        with open(csv_file_name, 'w', newline='', encoding='utf-8') as csvfile:
            writer = csv.writer(csvfile)
       
            # 遍歷表格中的每一行
            for row in range(table.Rows.Count):
                # 獲取一行
                tableRow = table.Rows.get_Item(row)
                
                # 讀取一行中的單元格內容,只取每個單元格的第一個段落
                row_data = [tableRow.Cells.get_Item(cell).Paragraphs[0].Text for cell in range(tableRow.Cells.Count)]
                
                # 將單元格內容寫入CSV文件
                writer.writerow(row_data)

doc.Close()

提取結果:

到此這篇關于Python實現(xiàn)批量提取Word文檔表格數(shù)據的文章就介紹到這了,更多相關Python提取Word表格數(shù)據內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論