關於pythondocxcompose的信息

本文目錄一覽:

python合併word

合併多個 word文件到 一個文件 中,用於文件的批量打印。

要求:

採用 python 實現,使用python中的 python-docx 和 docxcompose 結合的方式來實現此功能。

優點:

缺點:

只支持docx 文件的合併, 不支持doc文件 。如想通過此模式合併doc文件,需將doc文檔轉換為docx文檔。

將一個文件夾中的所有文件,都合併到一個文檔中。

要求每個文檔,都從一個新頁面開始,因此需在除第一個文檔的每個文檔前面加上 分頁符 ,所以單獨定義了一個只包含分頁符的文檔 page_break_doc 。

部分情況下會出現問題,如文檔當前已經到 最後一行 了,新加的分頁符會導致生成一頁空白的文件, 此種情況,後續更新此文章時解決 。

定義目標文檔,初始化時,採用 target_doc = Document(source_file_path_list[0]) 的方式,以第一個要拼接的文檔作為初始文檔。

主要是因為,如果創建的空的文檔 target_doc = Document() ,新生成的文檔中 自帶的文檔樣式 (如標題樣式、正文樣式等) 將會影響新拼接的文檔中的採用了默認樣式的內容 ,故模板文檔從第一個文檔中進行加載默認樣式,避免了這種情況。

這也是網上大多數採用此種方式合併word,樣式發生變更的原因 ,需注意此問題。

同時需注意,如果拼接的文檔中,存在默認格式不一樣,並且未為段落、文字指定單獨樣式的情況時,需檢查,第一個文件作為模板加載的默認樣式, 是否會影響後續的其他文件合併後的默認樣式 。

200個文件合併,耗時10秒左右。速度非常快

python腳本的程序,其他程序可以直接通過 命令行的形式調用 ,或者python提供http接口,程序通過 http接口調用 。

切記通過http接口調用其他程序是,需設置好調用超時時間,防止無限等待請求結果,導致負載均衡時,大量請求超時而導致的程序整體不再分發請求。

Python Word文檔處理 上篇:python-docx

某天我收到一個需求:希望能夠用python對word文檔進行一些處理,比如更換一些文字以及添加批註。

簡單搜索後,我發現 python-docx 是一個處理docx文檔的常用python庫,因此我打算用它來進行進一步開發。

官方文檔 提供了一個簡單的示例

python-docx 將文檔抽象為document對象、paragraph對象以及run對象,提供了圍繞這些對象進行簡單處理的API

然而在文檔中並沒有出現關於批註操作的部分,我在搜尋 一些文章 後發現了在某個 issue 中提及了添加批註相關信息,然而還是沒有得到具體的解決辦法

docx文檔底層是由XML文件組成的

我們可以將一個 xx.docx 文件的後綴名改為 .rar 然後將其手動解壓,可以得到下面這些文件

在諸多文件當中主要用到的是 document.xml 文件,這裡保存了文檔的內容

打開一份 document.xml 文件,拋開header、footer、table以及其他特殊項,去掉樣式等修飾項,一份樸素的docx文檔主要可以分為三個部分:paragraph、run、text

paragraph即段落,就是我們在word當中看到的一段。text即文本,就是真實的內容。run比較抽象,我們可以將其理解為片段,即語句的切分。

為了更好地理解run是什麼,打開一篇word文檔定位其中一句話

讓我們看看這篇文檔解壓之後的 document.xml 文件中對應的部分

OK,我們可以看到原本完整的一句話在word中被拆分成了許多個 w:r 標籤,這就是 run ,word切分 run 的規則很多,有的根據標點符號,有的根據中文分詞,句子中如果存在不同樣式的字詞也會單獨切分出來,因此我們很難預估一句話究竟會被分成幾個片段。

在issue中搜索comment關鍵字發現在一個 merge request 上已經給出了添加批註的解決方案,可以通過 paragraph 對象上的 add_comment 方法給一個段落添加批註

但這還是不符合我的需求,我的目標是精準添加到某個詞或者短語上

打開 這個貢獻者的源碼 進行研究

其實就是在P標籤內插入comment標籤引用,同時添加comment標籤到xx文件

同理我們可以在r標籤內插入comment標籤引用,同時添加comment標籤到xx文件,這樣就能實現給特定詞添加批註的需求了

python docx 使用總結

本文將總結之前在使用 python-docx 包處理 word 文檔時的一些理解與經驗。

安裝

引入

python-docx 將整個文章看做是一個 Document 對象 官方文檔 – Document ,其基本結構如下:

在 python-docx 中, run 是最基本的單位,每個 run 對象內的文本樣式都是一致的,也就是說,在從 docx 文件生成文檔對象時, python-docx 會根據樣式的變化來將文本切分為一個個的 Run 對象。

你也可以通過它來處理表格 官方文檔 – 表格 ,基本結構如下:

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/183132.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-24 16:26
下一篇 2024-11-24 16:26

相關推薦

  • Java 監控接口返回信息報錯信息怎麼處理

    本文將從多個方面對 Java 監控接口返回信息報錯信息的處理方法進行詳細的闡述,其中包括如何捕獲異常、如何使用日誌輸出錯誤信息、以及如何通過異常處理機制解決報錯問題等等。以下是詳細…

    編程 2025-04-29
  • 使用Python爬蟲獲取電影信息的實現方法

    本文將介紹如何使用Python編寫爬蟲程序,來獲取和處理電影數據。需要了解基本的Python編程語言知識,並使用BeautifulSoup庫和Requests庫進行爬取。 一、準備…

    編程 2025-04-28
  • Python爬取網頁信息

    本文將從多個方面對Python爬取網頁信息做詳細的闡述。 一、爬蟲介紹 爬蟲是一種自動化程序,可以模擬人對網頁進行訪問獲取信息的行為。通過編寫代碼,我們可以指定要獲取的信息,將其從…

    編程 2025-04-28
  • 如何使用Python執行Shell命令並獲取執行過程信息

    本文將介紹如何使用Python執行Shell命令並獲取執行過程信息。我們將從以下幾個方面進行闡述: 一、執行Shell命令 Python內置的subprocess模塊可以方便地執行…

    編程 2025-04-28
  • Python實現身份信息模擬生成與查驗

    本文將從以下幾個方面對Python實現身份信息模擬生成與查驗進行詳細闡述: 一、身份信息生成 身份信息生成是指通過代碼生成符合身份信息規範的虛假數據。Python中,我們可以使用f…

    編程 2025-04-27
  • Dapper使用getschema獲取表信息

    本文旨在介紹Dapper中使用getschema獲取表信息的方法和注意事項。 一、獲取某張表的所有列信息 使用Dapper獲取某張表信息,可以使用 `IDbConnection.G…

    編程 2025-04-27
  • 已裝備我軍的空中信息化作戰平台

    本文將會從多個方面詳細闡述已裝備我軍的空中信息化作戰平台。 一、平台概述 已裝備我軍的空中信息化作戰平台是一個全新的作戰系統,具備實時數據採集、處理、分析、共享的能力。它可以在不同…

    編程 2025-04-27
  • 通過提交信息搜索-使用git

    本篇文章重點講解如何使用git通過提交信息來搜索。我們將從多個方面介紹如何使用git來搜索提交信息,並提供相應的代碼示例以供參考。 一、搜索方式 Git提供了三種搜索方式,分別為:…

    編程 2025-04-27
  • Linux查看系統信息

    一、CPU信息 Linux系統下,查看CPU的信息最常用的命令是lscpu。該命令可以顯示CPU架構、核心數量、線程數、緩存大小、CPU頻率等信息。例如: lscpu 該命令會輸出…

    編程 2025-04-24
  • 軟考 信息安全工程師

    軟考 信息安全工程師是一項技能型國家級資格認證考試,主要測試考生在信息安全領域的理論知識和實踐技能,是證明個人信息安全能力的重要證書。本文將從多個方面對軟考 信息安全工程師做詳細的…

    編程 2025-04-23

發表回復

登錄後才能評論