国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

多DOCX文檔文本內(nèi)容批量替換工具的實(shí)現(xiàn)和應(yīng)用

2022-07-07 01:55羅文兵王健周月
電子技術(shù)與軟件工程 2022年6期
關(guān)鍵詞:批量示意圖文檔

羅文兵 王健 周月

(北京賽迪軟件測(cè)評(píng)工程技術(shù)中心有限公司 北京市 100048)

近年來(lái)人們對(duì)低碳環(huán)保意識(shí)的不斷增強(qiáng),無(wú)紙化辦公已在各行各業(yè)廣泛應(yīng)用。電子文檔作為信息交互的主要媒介,在無(wú)紙化辦公中扮演著重要的角色。DOCX作為當(dāng)今電子文檔的主流格式之一,是美國(guó)微軟公司在其辦公系統(tǒng)Microsoft Office 2007之后廣泛使用的Word文件擴(kuò)展名,其本質(zhì)是基于Office Open XML標(biāo)準(zhǔn)的壓縮文件格式,我國(guó)的WPS Office也可以很好的兼容該格式。在DOCX文檔使用的過(guò)程中,常常有這樣一種需求場(chǎng)景,需要修改替換多個(gè)DOCX文檔中含有相同文本的內(nèi)容。如果使用傳統(tǒng)默認(rèn)的工作方式,逐個(gè)打開(kāi)DOCX文檔進(jìn)行編輯替換操作,既耗時(shí)又費(fèi)力,效率低下。本文依托軟件第三方測(cè)評(píng)電子文檔編制工作場(chǎng)景,設(shè)計(jì)實(shí)現(xiàn)了一款無(wú)需啟動(dòng)文字處理軟件就可以編輯多個(gè)DOCX文檔,完成批量修改替換DOCX文檔中文本內(nèi)容的工具,該工具在實(shí)際工作中也得到了較多測(cè)試工程師的使用,可以快速的完成對(duì)多DOCX文檔相同文本內(nèi)容的編輯替換,進(jìn)一步提升了軟件第三方測(cè)評(píng)電子文檔編制修改的效率。

1 設(shè)計(jì)工具的背景

軟件第三方測(cè)評(píng)工作,通俗的說(shuō)是擺事實(shí)、講證據(jù)的工作。在整個(gè)工作過(guò)程會(huì)產(chǎn)出大量的DOCX格式的電子文檔,如測(cè)試方案、測(cè)試計(jì)劃、測(cè)試用例、測(cè)試報(bào)告以及有關(guān)質(zhì)量控制的文檔。這些DOCX文檔經(jīng)常包含各種各樣相同的要素信息,如研制單位名稱、被測(cè)系統(tǒng)名稱、測(cè)試項(xiàng)名稱或用例標(biāo)識(shí)等內(nèi)容。DOCX文檔的編制過(guò)程中,在測(cè)試需求模糊、變更或測(cè)試文檔評(píng)審后等情況下,經(jīng)常需要對(duì)上述多種DOCX文檔包含的相同文本內(nèi)容進(jìn)行統(tǒng)一修改,但主流的文字處理軟件只提供了對(duì)單個(gè)DOCX文檔內(nèi)容替換功能,只能將DOCX

文檔按照次序一個(gè)一個(gè)打開(kāi),執(zhí)行相關(guān)修改替換操作,無(wú)法一次同時(shí)完成對(duì)多個(gè)DOCX文檔相同文本的編輯替換操作。若要進(jìn)行此類的操作,則需要借助VBA宏程序或者第三方的工具軟件等完成。一直以來(lái),該類工具軟件比較有代表性的是澳大利亞DataMystic公司的WordPipe,雖然其可以較好地完成對(duì)多DOCX文檔的編輯替換操作,但存在以下一些不足:

(1)工具為非開(kāi)源軟件,軟件內(nèi)部邏輯未知,其知識(shí)產(chǎn)權(quán)屬澳大利亞DataMystic公司所有。使用其對(duì)DOCX文檔進(jìn)行批量編輯,存在軟件后門(mén)等未知風(fēng)險(xiǎn)。

(2)工具為商業(yè)付費(fèi)軟件,需要支付較昂貴的授權(quán)費(fèi)用。軟件的試用期,有批量處理文件數(shù)量的限制。若付費(fèi)使用,但只是在一些少量、簡(jiǎn)單替換需求的多DOCX文檔批量替換場(chǎng)景,為此付出高昂費(fèi)用,性價(jià)比極低。

(3)工具不支持跨平臺(tái),只能運(yùn)行于Windows 7及以上的操作系統(tǒng)。在國(guó)產(chǎn)自主可控浪潮的今天,其無(wú)法在基于Linux內(nèi)核的國(guó)產(chǎn)操作系統(tǒng)上運(yùn)行。

(4)工具無(wú)法自定義。缺少適用于國(guó)內(nèi)軟件第三方測(cè)評(píng)文檔批量編輯等領(lǐng)域復(fù)雜場(chǎng)景的替換功能。

為了解決在軟件第三方測(cè)評(píng)電子文檔編制工作中,批量替換多DOCX文檔文本內(nèi)容的需求。首先基于Microsoft Visual Studio2010 Visual C#研發(fā)了一款Windows窗體應(yīng)用程序“多Word文檔內(nèi)容替換工具”,該工具基本滿足了工作的需要,在不啟動(dòng)Word軟件的方式下,可以對(duì)單個(gè)DOCX文件或文件夾中的多個(gè)DOCX文件進(jìn)行編輯,完成一條或多條文本內(nèi)容的替換。但也存在以下一些不足:

(1)工具是基于Visual C#開(kāi)發(fā)的Windows窗體應(yīng)用程序,只能運(yùn)行于Windows平臺(tái),無(wú)法跨平臺(tái)使用。

(2)工具需在安裝Microsoft Office系統(tǒng)后,才可以正常完成文本內(nèi)容替換功能。

(3)查找內(nèi)容和替換內(nèi)容文本輸入框,在運(yùn)行工具后需逐條輸入。在文本條目較少時(shí),使用工具編輯文檔的效率尚可,但文本條目較多時(shí),使用工具較為繁瑣。

(4)工具僅實(shí)現(xiàn)了基本的DOCX文件替換功能。在執(zhí)行替換操作時(shí),容易出現(xiàn)“誤傷”,替換了一些不需要替換的文本,如一些專有名詞、單位名稱等。

多Word文檔內(nèi)容替換工具主要界面見(jiàn)圖1。

圖1:多Word文檔內(nèi)容替換工具主要界面

為了進(jìn)一步解決跨平臺(tái)使用、精準(zhǔn)替換等迫切需求,最后基于Python設(shè)計(jì)實(shí)現(xiàn)了一款“多DOCX文檔文本內(nèi)容批量替換工具”,該工具為單機(jī)運(yùn)行方式,可以部署在Windows、MacOS、Linux和國(guó)產(chǎn)操作系統(tǒng)操作中,在不啟動(dòng)文字處理軟件的前提下,直接對(duì)DOCX文檔進(jìn)行操作,不僅可以完成對(duì)普通多DOCX文檔相同文本內(nèi)容的替換,還可以對(duì)預(yù)置標(biāo)記詞條的多DOXC文檔進(jìn)行處理,執(zhí)行準(zhǔn)確、快速的替換。進(jìn)一步提高多DOCX文檔編制修改的效率。

2 工具的實(shí)現(xiàn)

“多DOCX文檔文本內(nèi)容批量替換工具”包括模式選擇及輸入模塊、處理模塊和輸出模塊。工具的組成及處理流程示意圖見(jiàn)圖2。

圖2:多DOCX文檔文本內(nèi)容批量替換工具組成及處理流程示意圖

(1)模式選擇及輸入模塊??紤]到第三方測(cè)評(píng)電子文檔編制工作的實(shí)際情況,主要分為“模板替換”和“文本替換”兩種模式。在執(zhí)行文檔集替換操作時(shí),需要準(zhǔn)備好包含“查找內(nèi)容”和“替換內(nèi)容”的“替換信息表(XLSX表格)”文件,以及待處理的“DOCX文檔(集)”兩類輸入文件?!疤鎿Q信息表(XLSX表格)”文件,首行作為表頭,其余行作為數(shù)據(jù)行,有“模板替換信息表(XLSX表格)”和“文本替換信息表(XLSX表格)”兩種形式見(jiàn)圖3。

圖3:“替換信息表(XLSX表格)”文件示意圖

(2)處理模塊?!澳0逄鎿Q”模式可以提前在DOCX文檔(集)預(yù)置標(biāo)記,然后即可精準(zhǔn)的按照“模板替換信息表(XLSX表格)”的內(nèi)容對(duì)“預(yù)制標(biāo)記的DOCX文檔(集)”進(jìn)行無(wú)“誤傷”的替換操作?!拔谋咎鎿Q”模式則可以按照“文本替換信息表(XLSX表格)”的內(nèi)容對(duì)“普通DOCX文檔(集)”執(zhí)行與文字處理軟件內(nèi)部替換功能一致的替換操作。

(3)輸出模塊。在執(zhí)行工具界面上的相關(guān)功能時(shí),會(huì)實(shí)時(shí)在“信息處理”區(qū)域輸出當(dāng)前工具的操作記錄,工具執(zhí)行完成后給出相應(yīng)提示信息,隨即完成了對(duì)待處理的“DOCX文檔(集)”的處理。

“多DOCX文檔文本內(nèi)容批量替換工具”基于Python的原生庫(kù)tkinter、configparser、zipfile、第三方庫(kù)OpenPyXL、python-docx-template和python-docx實(shí)現(xiàn)。其中,tkinter庫(kù)用于人機(jī)交互界面的制作,通過(guò)可視化界面的方式提供相關(guān)功能;configparser用于工具配置文件的解析;zipfile用于模板zip壓縮文件的文件解壓提取操作;OpenPyXL庫(kù)用于對(duì)XLSX文檔中的數(shù)據(jù)進(jìn)行讀??;pythondocx庫(kù)用于對(duì)DOCX文檔進(jìn)行操作;python-docx-template庫(kù)用于對(duì)使用類Jinja2語(yǔ)法標(biāo)記過(guò)的DOCX文檔進(jìn)行操作。

使用Tkinter庫(kù)制作人機(jī)交互界面時(shí),設(shè)計(jì)實(shí)現(xiàn)了頂部菜單欄(menubar)、選擇文件對(duì)話框(askopenfilename)、單項(xiàng)選擇按鈕(Radiobutton)、文件路徑文本框(Entry)和多行文本框(Text)等界面元素。

使用configparser庫(kù)進(jìn)行工具默認(rèn)配置文件的生成設(shè)置和讀取操作。設(shè)置配置文件源碼示意圖見(jiàn)圖4。

圖4:設(shè)置配置文件源碼示意圖

使用zipfile庫(kù),用于對(duì)包含“預(yù)制標(biāo)記的DOCX文檔(集)”的ZIP模板文件進(jìn)行解壓提取操作,將ZIP模板文件中的DOCX文件解壓到指定路徑。

使用OpenPyXL庫(kù)讀取“模板替換信息表(XLSX表格)”中“查找內(nèi)容”和“替換內(nèi)容”的數(shù)據(jù)時(shí),主要涉及三個(gè)對(duì)象模型,Workbook、Sheet和Cell。讀取XLSX文檔源碼示意圖見(jiàn)圖5。

圖5:讀取XLSX文檔源碼示意圖

(1)Workbook是XLSX文檔中的工作簿,一個(gè)工作簿包含多個(gè)工作表。操作XLSX文檔時(shí),首先需要?jiǎng)?chuàng)建Workbook對(duì)象,每個(gè)被創(chuàng)建和打開(kāi)的XLSX文檔都是獨(dú)立的Workbook對(duì)象。

(2)Sheet是XLSX文檔中的工作表,每個(gè)XLSX文檔至少需要含有一個(gè)Sheet,Sheet對(duì)象又包含了工作表的行、列、單元格等對(duì)象元素。

(3)Cell是XLSX文檔中工作表的單元格,是不可分割的基本數(shù)據(jù)存儲(chǔ)單元。讀取XLSX文檔源碼示意圖如圖5所示。

使用python-docx庫(kù)處理“普通DOCX文檔(集)”,進(jìn)行打開(kāi)、編輯、保存和普通文本替換等操作時(shí),主要涉及四個(gè)對(duì)象模型,Document、Paragraph、Run及Section。操作DOCX文檔源碼示意圖見(jiàn)圖6。

圖6:操作DOCX文檔源碼示意圖

(1)Document:是DOCX文檔對(duì)象,每個(gè)DOCX文檔對(duì)象包含許多個(gè)代表“段落”的Paragraph對(duì)象。

(2)Paragraph:是DOCX文檔中段落的對(duì)象。一個(gè)DOCX文檔由多個(gè)段落組成,當(dāng)在DOCX文檔中輸入一個(gè)換行符(按回車鍵),就創(chuàng)建一個(gè)新的段落,而當(dāng)輸入手動(dòng)換行符(按Shift+回車鍵)則不會(huì)創(chuàng)建新的段落。每個(gè)段落又包含許多個(gè)代表段落內(nèi)“文本塊”元素的Run對(duì)象。

(3)Run是DOCX文檔段落內(nèi)的一個(gè)節(jié)段。每個(gè)段落由多個(gè)節(jié)段組成,一個(gè)段落中具有相同樣式的連續(xù)文本,組成一個(gè)節(jié)段。Run是DOCX文檔最基本的單位,生成文檔對(duì)象時(shí),python-docx會(huì)根據(jù)樣式的變化來(lái)將文本切分為一個(gè)個(gè)的Run對(duì)象。

(4)Section是DOCX文檔的章節(jié)對(duì)象。DOCX文檔的章節(jié)以分節(jié)符作為標(biāo)記,章節(jié)對(duì)象包含了頁(yè)眉和頁(yè)腳的對(duì)象。

使用python-docx-template庫(kù)時(shí),由于其繼承使用了Jinja2方法,在處理“預(yù)制標(biāo)記的DOCX文檔(集)”,進(jìn)行精準(zhǔn)替換操作時(shí),主要涉及了一些Jinja2的標(biāo)記語(yǔ)言。通過(guò)提前在DOCX文檔中預(yù)制標(biāo)記信息,定義如“{{標(biāo)記名稱}}”的標(biāo)記信息,然后對(duì)這些標(biāo)記查找和定位,實(shí)現(xiàn)對(duì)DOCX文檔文本內(nèi)容的精準(zhǔn)替換。

出于對(duì)工具易用性的考慮,在模式選擇模塊中,設(shè)計(jì)實(shí)現(xiàn)了“模板替換”“已有文件模板替換”“已有文件文本替換”三個(gè)功能?!疤鎿Q模式”的第一個(gè)選項(xiàng)“模板替換”功能可以自動(dòng)解壓包含“預(yù)制標(biāo)記的DOCX文檔(集)”的ZIP文件,并完成模板替換功能;第二個(gè)選項(xiàng)“已有文件模板替換”功能,適用于在文件夾中已存“預(yù)制標(biāo)記的DOCX文檔(集)”的情況;第三個(gè)選項(xiàng),“已有文件文本替換”功能,則是按照“文本替換信息表(XLSX表格)”的內(nèi)容,對(duì)“普通DOCX文檔(集)”執(zhí)行與文字處理軟件內(nèi)部替換功能一致的替換操作?!岸郉OCX文檔文本內(nèi)容批量替換工具”主要界面示意圖見(jiàn)圖7。

圖7:多DOCX文檔文本內(nèi)容批量替換工具主要界面示意圖

工具實(shí)現(xiàn)時(shí)也考慮了自定義配置的功能,提供對(duì)“文本替換信息表(XLSX表格)”讀取內(nèi)容的配置??梢酝ㄟ^(guò)對(duì)配置文件的修改,自定義讀取“文本替換信息表(XLSX表格)”的工作表名稱,如“Sheet1”,自定義“查找內(nèi)容”和“替換內(nèi)容”的列,如“查找內(nèi)容列:B”、“替換內(nèi)容列:C”。“多DOCX文檔文本內(nèi)容批量替換工具”自定義配置示意圖見(jiàn)圖8。

圖8:多DOCX文檔文本內(nèi)容批量替換工具自定義配置示意圖

3 工具的應(yīng)用

“多DOCX文檔文本內(nèi)容批量替換工具”由基于跨平臺(tái)特性較好的Python語(yǔ)言實(shí)現(xiàn),能夠在軟件第三方測(cè)評(píng)電子文檔編制的主要操作系統(tǒng)運(yùn)行中。在軟件第三方測(cè)評(píng)電子文檔編制實(shí)際工作中,得到了較廣泛的使用。

(1)“模板替換”可應(yīng)用于文檔要素、格式相對(duì)固定的表單、申請(qǐng)說(shuō)明等DOCX文檔的批量修改處理領(lǐng)域。軟件測(cè)試相關(guān)的立項(xiàng)、評(píng)審等DOCX文檔的批量修改的應(yīng)用示意圖見(jiàn)圖9。

圖9:“模板替換”場(chǎng)景示意圖

(2)“文本替換”沒(méi)有行業(yè)領(lǐng)域的限制,可應(yīng)用需要批量處理多個(gè)DOCX文檔的場(chǎng)景。如軟件測(cè)試文檔編制、商務(wù)信函、錄用通知等DOCX文檔批量修改處理。軟件測(cè)試相關(guān)的DOCX文檔的批量修改示意圖見(jiàn)圖10。

圖10:“文本替換”場(chǎng)景示意圖

4 結(jié)束語(yǔ)

“多DOCX文檔文本內(nèi)容批量替換工具”,將繁復(fù)的多個(gè)DOCX文檔編輯替換相同文本內(nèi)容的工作進(jìn)行了簡(jiǎn)化,解決了批量處理多個(gè)DOCX文檔的效率問(wèn)題,節(jié)省了在相關(guān)文檔編制工作的大量時(shí)間??梢詫?duì)工具內(nèi)置的模板進(jìn)行修改、自定義,提高相關(guān)領(lǐng)域文檔批量編制工作的效率。

猜你喜歡
批量示意圖文檔
淺談Matlab與Word文檔的應(yīng)用接口
有人一聲不吭向你扔了個(gè)文檔
先畫(huà)示意圖再解答問(wèn)題
黔西南州旅游示意圖
基于RI碼計(jì)算的Word復(fù)制文檔鑒別
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
兩張圖讀懂“青年之聲”
淺議高校網(wǎng)銀批量代發(fā)
基于AUTOIT3和VBA的POWERPOINT操作題自動(dòng)批量批改
考慮價(jià)差和再制造率的制造/再制造混合系統(tǒng)生產(chǎn)批量研究