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

Python實(shí)現(xiàn)批量提取Word中的表格

 更新時間:2024年02月15日 07:44:41   作者:PythonFun  
表格在word文檔中常見的文檔元素之一,操作word文件時有時需要提取文件中多個表格的內(nèi)容到一個新的文件,本文給大家分享兩種批量提取文檔中表格的兩種方法,希望對大家有所幫助

表格在word文檔中常見的文檔元素之一。操作word文件時有時需要提取文件中多個表格的內(nèi)容到一個新的文件,甚至有時還會要提取題注信息。

今天,給大家分享兩種批量提取文檔中表格的兩種方法,分別是VBA法和Python法兩種。

一、VBA法提取word中的表格

1. 代碼實(shí)現(xiàn)

VBA(Visual Basic for Applications)操作Word文件時,可以執(zhí)行包括創(chuàng)建、打開、保存、修改文本和格式等多種任務(wù)。今天,我們使用VBA來批量提取當(dāng)前文件中的表格,在每個表格中間添加一個空行。實(shí)現(xiàn)代碼如下:

 Sub ExtractTablesAndPreviousRowToNewFile()
 Dim docSource As Document
 Dim docTarget As Document
 Dim tbl As Table
 Dim rng As Range
 Dim outputPath As String
 Dim fileName As String
 
 ' 設(shè)置輸出文件名和路徑
 fileName = "output.docx"
 outputPath = ActiveDocument.Path & "\" & fileName
 
 ' 當(dāng)前文檔設(shè)置為源文檔
 Set docSource = ActiveDocument
 ' 創(chuàng)建一個新文檔作為目標(biāo)文檔
 Set docTarget = Documents.Add
 
 For Each tbl In docSource.Tables
 
 ' 復(fù)制表格
 tbl.Range.Copy
 docTarget.Content.InsertParagraphAfter
 docTarget.Content.Paragraphs.Last.Range.Paste
 
 ' 在表格后添加一個空行
 docTarget.Content.InsertParagraphAfter
 docTarget.Content.Paragraphs.Last.Range.InsertParagraphAfter
 Next tbl
 
 ' 刪除目標(biāo)文檔中的第一個空段落
 If docTarget.Paragraphs.Count > 0 Then
 docTarget.Paragraphs(1).Range.Delete
 End If
 
 ' 保存新文檔到指定路徑
 docTarget.SaveAs2 fileName:=outputPath, FileFormat:=wdFormatXMLDocument
 docTarget.Close
 
 MsgBox "表格及其上方一行內(nèi)容已經(jīng)成功提取到 " & outputPath, vbInformation
End Sub

2. 代碼分析

以上代碼首先激活當(dāng)前文檔作為源文檔,然后創(chuàng)建一個新文檔output.docx用來放置提取的表格和題注。它會遍歷源文檔中的所有表格,對于每個表格,嘗試復(fù)制表格本身到目標(biāo)文檔中。

每個表格后面,還會插入一個空行以保持文件中多個表格間清晰的視覺分隔。

3. 使用方法

首先,在Word中打開你想提取表格的文檔,然后按下 Alt + F11 打開VBA編輯器。在【項(xiàng)目】窗格中,選擇你的文檔,然后插入一個新的模塊(右鍵點(diǎn)擊你的文檔名稱,選擇【插入】 > 【模塊】)。將以上VBA代碼復(fù)制并粘貼到新模塊中。關(guān)閉VBA編輯器,然后運(yùn)行宏(在Word中,可以通過【視圖】 > 【宏】> 【查看宏】,選擇這個宏,然后點(diǎn)擊【運(yùn)行】即可。

二、Python法

Python在office辦公自動化方面有非常廣泛的用途,它有專門的庫來處理office中的各個組件,而且這些都是開源免費(fèi)使用的。操作word文件就要用到python-docx這個庫,在編寫程序之前要安裝新版的Python程序,然后在cmd下面用pip install python-docx來安裝這個庫,也可以在thonny這個輕量版的集成開發(fā)環(huán)境中安裝python-docx用于操作word文件。

1.代碼實(shí)現(xiàn)

我們首先從docx中導(dǎo)入Document模塊,然后讀取指定的word文件,提取表格及其內(nèi)容到一個新的文件當(dāng)中并保存。實(shí)現(xiàn)代碼如下:

from docx import Document
import os
 
def extract_tables(doc_path, output_path):
    # 加載原始文檔
    doc = Document(doc_path)
    new_doc = Document()
 
    # 提取表格并添加到新文檔
    for i, table in enumerate(doc.tables):
        t = new_doc.add_table(rows=1, cols=len(table.columns))
        t.style = 'Table Grid'  # 使用內(nèi)置的表格樣式,這樣會自動添加框線
        # 復(fù)制表頭
        for j, cell in enumerate(table.rows[0].cells):
            t.cell(0, j).text = cell.text
        # 復(fù)制其他行
        for row in table.rows[1:]:
            new_row = t.add_row()
            for j, cell in enumerate(row.cells):
                new_row.cells[j].text = cell.text
 
        # 除了最后一個表格外,在每個表格后添加一個空行(空段落)
        if i < len(doc.tables) - 1:
            new_doc.add_paragraph()
 
    # 保存新文檔
    new_doc.save(output_path)
 
# 使用示例
extract_tables('example.docx', 'output.docx')

2. 代碼分析

以上代碼把example.docx文件中的所有表格提取到了output.docx文件中,同時使用了表格的內(nèi)置樣式,給新生成的表格自動添加框線,基本實(shí)現(xiàn)表格文本內(nèi)容的提取,但是表格中的字體顏色、大小和邊框樣式均無法提取。同時這里也沒有提取題注,這時我們需要對代碼進(jìn)一步修改,以使其可以提取表格上方的題注。

3. 提取題注和表格內(nèi)容

本代碼把表格上方居中的文字默認(rèn)識別為表格的題注,提取表格內(nèi)容時會一并提取出來。

from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
import os
 
def extract_tables_with_titles(doc_path, output_path):
    # 加載原始文檔
    doc = Document(doc_path)
    new_doc = Document()
 
    # 提取表格并添加到新文檔
    for i, table in enumerate(doc.tables):
        # 嘗試定位并復(fù)制表格上方的居中文字
        # 查找表格前的段落
        para = table._element.getprevious()
        if para is not None and para.tag.endswith('p'):
            # 檢查該段落的格式是否為居中
            p = para.getparent()
            para_obj = [p for p in doc.paragraphs if p._element == para][0]
            if para_obj.alignment == WD_ALIGN_PARAGRAPH.CENTER:
                # 添加居中的段落到新文檔
                new_para = new_doc.add_paragraph(para_obj.text)
                new_para.alignment = WD_ALIGN_PARAGRAPH.CENTER
 
        # 添加表格
        t = new_doc.add_table(rows=1, cols=len(table.columns))
        t.style = 'Table Grid'  # 使用內(nèi)置的表格樣式,這樣會自動添加框線
 
        # 復(fù)制表頭
        for j, cell in enumerate(table.rows[0].cells):
            t.cell(0, j).text = cell.text
        # 復(fù)制其他行
        for row in table.rows[1:]:
            new_row = t.add_row()
            for j, cell in enumerate(row.cells):
                new_row.cells[j].text = cell.text
 
        # 除了最后一個表格外,在每個表格后添加一個空行(空段落)
        if i < len(doc.tables) - 1:
            new_doc.add_paragraph()
 
    # 保存新文檔
    new_doc.save(output_path)
 
# 使用示例
extract_tables_with_titles('example.docx', 'output.docx')

以上代碼在原有代碼基礎(chǔ)上增加了題注內(nèi)容的提取,通過調(diào)用extract_tables_with_titles這個函數(shù),批量把example.docx文件中的表格和題錄提取出來,并放到了output.docx當(dāng)中,并且每個表格之間會有一個空行。

三、學(xué)后反思

利用VBA和Python均可以實(shí)現(xiàn)表格內(nèi)容提取的功能,但是對于文字和表格的樣式無法完整提取。后期會進(jìn)一步探索如何把表格內(nèi)容和樣式完整拷貝出來,但是由于涉及字體等特殊格式,提取樣式會有一定的難度。

上面兩種方法的優(yōu)勢在于可以批量、高效地提取表格內(nèi)容,但是無法提取樣式,因此在提取復(fù)雜表格時可能會報(bào)錯。

以上代碼默認(rèn)是把表格批量提取到當(dāng)前目錄,VBA代碼應(yīng)用的是當(dāng)前的word文件,而python則要求提取的文件名為example.docx,如果想批量提取多個文件中的表格則還需要添加for循環(huán)來遍歷所有的word文件。

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

相關(guān)文章

  • python裝飾器練習(xí)題及答案

    python裝飾器練習(xí)題及答案

    這篇文章主要介紹了python裝飾器練習(xí)題及答案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Scrapy啟動報(bào)錯invalid syntax的解決

    Scrapy啟動報(bào)錯invalid syntax的解決

    這篇文章主要介紹了Scrapy啟動報(bào)錯invalid syntax的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 使用Python輕松繪制帶誤差棒的柱狀圖

    使用Python輕松繪制帶誤差棒的柱狀圖

    誤差棒(Error Bar)是數(shù)據(jù)可視化中傳遞可靠性信息的 “利器”,它能在展示數(shù)據(jù)平均值的同時,直觀呈現(xiàn)數(shù)據(jù)的波動范圍,下面我們就來看看如何使用Python輕松繪制帶誤差棒的柱狀圖吧
    2025-08-08
  • Python語法垃圾回收機(jī)制原理解析

    Python語法垃圾回收機(jī)制原理解析

    這篇文章主要介紹了Python語法垃圾回收機(jī)制原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Pyhhon之Pygame的Font文本和字體

    Pyhhon之Pygame的Font文本和字體

    這篇文章主要介紹了Pygame的Font文本和字體,Pygame 通過pygame.font模塊來創(chuàng)建一個字體對象,從而實(shí)現(xiàn)繪制文本的目的。想進(jìn)一步了解的同學(xué)可以參考閱讀本文
    2023-04-04
  • python3 re返回形式總結(jié)

    python3 re返回形式總結(jié)

    在本篇文章里小編給大家整理了關(guān)于python3 re返回形式,對此有興趣的朋友們可以學(xué)習(xí)參考下。
    2020-11-11
  • Django制作簡易注冊登錄系統(tǒng)的實(shí)現(xiàn)示例

    Django制作簡易注冊登錄系統(tǒng)的實(shí)現(xiàn)示例

    本文介紹了如何使用Django搭建一個簡易的注冊登錄系統(tǒng),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • 如何在PyCharm中安全地設(shè)置和使用API Key方式

    如何在PyCharm中安全地設(shè)置和使用API Key方式

    在PyCharm中,通過運(yùn)行配置添加API_KEY環(huán)境變量,使用os.environ或os.getenv在代碼中引用,確保安全性,避免硬編碼,推薦設(shè)置默認(rèn)值或提示
    2025-07-07
  • numpy數(shù)組坐標(biāo)軸問題解決

    numpy數(shù)組坐標(biāo)軸問題解決

    本文主要介紹了numpy數(shù)組坐標(biāo)軸問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Python項(xiàng)目管理的利器Poetry的使用

    Python項(xiàng)目管理的利器Poetry的使用

    在?Python?項(xiàng)目開發(fā)中,包管理、依賴管理和虛擬環(huán)境的創(chuàng)建一直是開發(fā)者們經(jīng)常面對的難題,本文主要介紹了Python項(xiàng)目管理的利器Poetry的使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-04-04

最新評論

府谷县| 山阳县| 错那县| 黔西县| 牙克石市| 库车县| 弋阳县| 沛县| 涪陵区| 南召县| 武平县| 剑川县| 霍山县| 九江县| 惠来县| 黑水县| 建湖县| 商南县| 洪雅县| 高唐县| 谷城县| 漠河县| 六枝特区| 北碚区| 海阳市| 玛沁县| 静安区| 钦州市| 格尔木市| 陈巴尔虎旗| 柳州市| 旌德县| 阿尔山市| 茌平县| 奈曼旗| 乌鲁木齐县| 板桥市| 吉木萨尔县| 三门县| 南投市| 来宾市|