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

Python實現(xiàn)批量提取word文件中文本框內(nèi)容

 更新時間:2024年02月13日 08:39:08   作者:PythonFun  
在日常的辦公中,有時需要提取多個word文件中的文字框的內(nèi)容,這篇文章主要為大家介紹了三種常見的方法來提取文本框的內(nèi)容,希望對大家有一定的幫助

一、問題的提出

在日常的辦公中,有時需要提取多個word文件中的文字框的內(nèi)容。有時,文字框的數(shù)量比較多,而且處于文檔的不同位置,手工提取比較耗時耗力,同時也可能會產(chǎn)生遺漏。

我們也可以通過VBA和Python來解決這個問題,雖然聽起來有點兒小復雜,但是有了Chatgpt的加持,這個問題就不是那么麻煩了。

以下,我們采用三種不同的方法來提取文本框的內(nèi)容,經(jīng)過比較之后我們再做出判斷。

二、手動提取文本框內(nèi)容

手動選取的方法也比較簡單,思路就是定位——選中——復制——粘貼,可以把一個文檔中的文本框內(nèi)容復制到一個新文檔當中。

首先,我們選中文件中多個文本框中的一個,然后點擊【開始】——【選擇】——【選擇相似的文本】,就可以全部選中所有文本框的內(nèi)容,然后用快捷鍵ctrl+c復制,再打開一個新的文件粘貼就可以了。

經(jīng)過測試,以上方法僅適用于word而不適用于wps。

三、Python批量提示文字框內(nèi)容

我們也可以請出Python這款強大的武器,它最大的特點就是文件處理快捷、跨平臺性強,可以批量地識別出多個文檔中的全部文字框,并把其中的內(nèi)容全部復制出來,寫入一個新的文檔。

1. 引入處理文檔的包

要進行word文件的處理,我們就要安裝并導入python-docx這個包,在確保安裝python軟件之后,在cmd里輸入以下命令:

pip install python-docx

這樣就可以安裝必要的庫,在使用時就可以通過這個庫中的Document方法來讀取和生成docx文件。

另外,還需要安裝用于解析docx文件的lxml庫,安裝方法如上:

pip install lxml

另外還需要用到os, zipfile等標準庫,這些都不用安裝,使用時直接導入即可。

2. 算法分析

我們通過讀取docx文件,解壓該文件以獲取內(nèi)部XML結構,然后使用lxml庫解析這個XML,查找所有文本框內(nèi)容,并將這些內(nèi)容添加到一個新的文檔中。

我們還可以加入循環(huán)讀取文件的方法,實現(xiàn)對當前目錄下多個文件中文字框內(nèi)容的提取。

為了避免提取的內(nèi)容重復,我們還可以用set()對提取的內(nèi)容進行去重。

3. 代碼展示

明確了我們的目標之后,我們整理出指令,然后發(fā)送給ChatGPT,讓它給出我們想要的代碼,然后進行測試其可用性,并對代碼進行必要的修改,最終形成以下代碼。

from docx import Document
from lxml import etree
import zipfile
import os
 
# 加載.docx文件
source_docx = 'example.docx'
document = Document(source_docx)
 
# 解壓.docx文件以訪問其XML內(nèi)容
with zipfile.ZipFile(source_docx, 'r') as docx_zip:
 xml_content = docx_zip.read('word/document.xml')
 
# 解析XML內(nèi)容
xml_tree = etree.XML(xml_content)
 
# 定義命名空間
namespaces = {
 'w': 'http://schemas.openxmlformats.org/wordprocessingml/2006/main',
 'v': 'urn:schemas-microsoft-com:vml'
}
 
# 創(chuàng)建新文檔
output_docx = 'output_with_textboxes.docx'
new_document = Document()
 
# 已提取段落的文本集合
extracted_texts = set()
 
# 搜索文本框中的文本
textboxes = xml_tree.findall('.//w:txbxContent', namespaces)
for textbox in textboxes:
 paragraphs = textbox.findall('.//w:p', namespaces)
 for paragraph in paragraphs:
 texts = paragraph.findall('.//w:t', namespaces)
 paragraph_text = ''.join([text.text for text in texts if text.text])
 # 檢查段落文本是否已經(jīng)被提取
 if paragraph_text and paragraph_text not in extracted_texts:
 new_document.add_paragraph(paragraph_text)
 # 將提取的段落文本添加到集合中,以避免重復
 extracted_texts.add(paragraph_text)
 
# 保存新文檔
new_document.save(output_docx)
 
print(f'文本框內(nèi)容已被提取到 {output_docx}')

四、VBA批量提取文本框內(nèi)容

相比python,VBA的方法更為簡單,尤其是對于單個文件中的文本框,可以輕松提取。而且,我們還可以把VBA代碼綁定成一個自定義的按鈕,輕輕一點就可以提取所有文本框。

VBA代碼的優(yōu)勢非常明顯,不需要安裝額外的軟件,只用編寫一個宏來遍歷文檔中所有的形狀(Shapes),檢查它們是否是文本框,然后將這些文本框中的文本提取出來并寫入到一個新的Word文檔中。

1. VBA代碼實現(xiàn)

為確保VBA宏運行后生成的文件位于當前文檔的目錄下,可以使用ThisDocument.Path屬性來獲取當前文檔所在的路徑,然后基于這個路徑構建目標文件的完整路徑。

以下是修改后的VBA宏,它會將提取的文本保存到一個新的Word文檔中,該文檔位于當前活動文檔的同一目錄下:

Sub ExtractTextBoxContentAndSaveInCurrentDirectory()
 Dim srcDoc As Document
 Dim destDoc As Document
 Dim shape As shape
 Dim textBoxText As String
 Dim para As Paragraph
 Dim destPath As String
 
 ' 當前活動文檔作為源文檔
 Set srcDoc = ActiveDocument
 ' 創(chuàng)建一個新文檔來存儲提取的文本
 Set destDoc = Documents.Add
 
 ' 遍歷源文檔中的所有形狀
 For Each shape In srcDoc.Shapes
 ' 檢查形狀是否是文本框
 If shape.Type = msoTextBox Then
 ' 獲取文本框中的文本
 textBoxText = shape.TextFrame.TextRange.Text
 ' 將文本寫入到目標文檔
 Set para = destDoc.Content.Paragraphs.Add
 para.Range.Text = textBoxText & vbNewLine
 End If
 Next shape
 
 ' 構建目標文件的完整路徑
 destPath = srcDoc.Path & "\ExtractedTextBoxContent.docx"
 
 ' 保存目標文檔到當前文檔所在目錄
 destDoc.SaveAs2 FileName:=destPath
 
 ' 顯示保存成功的消息
 MsgBox "文本框內(nèi)容已提取到:" & destPath, vbInformation, "完成"
 
 ' 清理
 Set srcDoc = Nothing
 Set destDoc = Nothing
End Sub

2. 代碼使用方法

使用VBA代碼時,我們要打開Word文檔,按下Alt + F11以打開VBA編輯器。在“項目”窗口中選擇你的文檔。通過右鍵點擊你的文檔名,選擇【插入】——【模塊】來創(chuàng)建一個新模塊。在新模塊中粘貼上述代碼并保存,然后就可以運行當前的代碼?;蛘哧P閉VBA編輯器,然后按下Alt + F8,選擇ExtractTextBoxContentAndSaveInCurrentDirectory宏并運行。

在上述代碼中,srcDoc.Path獲取了當前活動文檔的路徑,然后用&連接\ExtractedTextBoxContent.docx構建了新文檔的完整保存路徑。這樣,無論你的Word文檔位于哪個目錄,提取的文本都將被保存到與之相同的目錄下。

五、學后反思

三種方法均可以實現(xiàn)對一個文件中所有文本框內(nèi)容的提取。第一種是手動,步驟不算多,如果在粘貼時選擇保存原格式,可以很好地保證文本框中文字的格式。它的唯一缺點時,不能對多個文件進行操作。

Python和VBA都是編程的方法,實現(xiàn)過程有些復雜,但是均可以在以上代碼的基礎上經(jīng)過修改后可以對多個文件進行批量的操作,省去了一個個打開文件、復制內(nèi)容的過程。其缺點是很難保證提取出的內(nèi)容格式不發(fā)生改變。

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

相關文章

  • 如何通過神經(jīng)網(wǎng)絡實現(xiàn)線性回歸的擬合

    如何通過神經(jīng)網(wǎng)絡實現(xiàn)線性回歸的擬合

    這篇文章主要介紹了如何通過神經(jīng)網(wǎng)絡實現(xiàn)線性回歸的擬合問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 使用Python和Pillow庫開發(fā)圖片轉GIF工具的完整流程

    使用Python和Pillow庫開發(fā)圖片轉GIF工具的完整流程

    這篇文章主要介紹了使用 Python 和 Pillow 庫開發(fā)圖片轉 GIF 工具的完整流程,工具支持多格式圖片輸入、自定義幀率、統(tǒng)一圖片尺寸及設置循環(huán)次數(shù)等核心功能,采用命令行參數(shù)解析實現(xiàn)便捷操作,需要的朋友可以參考下
    2025-10-10
  • python3中超級好用的日志模塊-loguru模塊使用詳解

    python3中超級好用的日志模塊-loguru模塊使用詳解

    loguru默認的輸出格式是上面的內(nèi)容,有時間、級別、模塊名、行號以及日志信息,不需要手動創(chuàng)建?logger,直接使用即可,另外其輸出還是彩色的,看起來會更加友好,這篇文章主要介紹了python3中超級好用的日志模塊-loguru模塊使用詳解,需要的朋友可以參考下
    2022-11-11
  • Python代碼統(tǒng)計耗時的方法詳解

    Python代碼統(tǒng)計耗時的方法詳解

    在現(xiàn)代軟件開發(fā)中,性能優(yōu)化是一個至關重要的環(huán)節(jié),無論是開發(fā)大型系統(tǒng)還是小型工具,開發(fā)者都需要對代碼的執(zhí)行時間進行精確測量,以便找出瓶頸并優(yōu)化性能,本文給大家介紹了Python代碼統(tǒng)計耗時的方法,需要的朋友可以參考下
    2025-02-02
  • python顏色隨機生成器的實例代碼

    python顏色隨機生成器的實例代碼

    這篇文章主要介紹了python顏色隨機生成器的實例代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • PIL對上傳到Django的圖片進行處理并保存的實例

    PIL對上傳到Django的圖片進行處理并保存的實例

    今天小編就為大家分享一篇PIL對上傳到Django的圖片進行處理并保存的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 基于pytorch中的Sequential用法說明

    基于pytorch中的Sequential用法說明

    這篇文章主要介紹了基于pytorch中的Sequential用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python實戰(zhàn)整活之聊天機器人

    Python實戰(zhàn)整活之聊天機器人

    這篇文章主要介紹了Python實戰(zhàn)整活之聊天機器人,文中有非常詳細的代碼示例,對正在學習python的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Python爬蟲抓取豆瓣TOP250數(shù)據(jù)從分析到實踐的全過程(詳細圖解)

    Python爬蟲抓取豆瓣TOP250數(shù)據(jù)從分析到實踐的全過程(詳細圖解)

    本文介紹了使用Python爬取豆瓣電影Top250數(shù)據(jù)的方法,首先驗證了目標數(shù)據(jù)在頁面源代碼中,然后通過requests模塊獲取頁面內(nèi)容,添加請求頭繞過反爬機制,接著使用re模塊編寫正則表達式,采用惰性匹配模式提取信息,通過循環(huán)實現(xiàn)翻頁爬取,將10頁共250條數(shù)據(jù)保存為CSV文件
    2025-10-10
  • Python logging管理不同級別log打印和存儲實例

    Python logging管理不同級別log打印和存儲實例

    這篇文章主要介紹了Python logging管理不同級別log打印和存儲實例,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01

最新評論

彩票| 荃湾区| 昆山市| 东海县| 德钦县| 乐业县| 大渡口区| 淮北市| 仙居县| 淅川县| 吉安县| 定边县| 陵川县| 海林市| 伊通| 二连浩特市| 张家口市| 宣汉县| 石城县| 宁海县| 邢台县| 东兰县| 怀远县| 庆城县| 西峡县| 米泉市| 墨竹工卡县| 荔波县| 巩义市| 荃湾区| 安义县| 东莞市| 闽清县| 台江县| 岳西县| 赫章县| 任丘市| 孟州市| 安化县| 常州市| 临海市|