摘 要:隨著汽車檢測技術(shù)的發(fā)展,越來越多的汽車檢測報告隨之生成,但是這些檢測報告中的數(shù)據(jù)不易提取,無法對檢測數(shù)據(jù)的二次加工和分析。鑒于此,本文提出了一種基于VSTO的報告數(shù)據(jù)自動化提取和報告生成的系統(tǒng)。首先,結(jié)合現(xiàn)有檢測報告設(shè)計Word數(shù)據(jù)自動化提取模板。然后利用VSTO相關(guān)技術(shù)對Word進行二次開發(fā),實現(xiàn)對模板數(shù)據(jù)的自動化提取,并將數(shù)據(jù)導入到數(shù)據(jù)庫中,便于對檢測數(shù)據(jù)進行多維度的分析。同時,系統(tǒng)可以根據(jù)數(shù)據(jù)庫中的數(shù)據(jù)生成相應的檢測報告。
關(guān)鍵詞:Word;數(shù)據(jù)提取;報告生成;VSTO
中圖分類號:TP317.2
Word是一種應用廣泛的文字處理系統(tǒng),隨著汽車檢測行業(yè)的發(fā)展,越來越多的Word檢測文檔需要生成,然而這些檢測報告格式不統(tǒng)一,存在文檔管理混亂、數(shù)據(jù)提取困難、數(shù)據(jù)查詢不便、數(shù)據(jù)無法進行二次加工和分析等問題。本文利用VBA(Visual Basic For Application)和VSTO(Visual Studio Tools for Office)相關(guān)技術(shù),對Word2010進行二次開發(fā),通過定制Word文檔模板和Word外接程序的開發(fā),對Word輸入數(shù)據(jù)有效性的驗證、Word數(shù)據(jù)自動化提取以及Word檢測報告的生成。實現(xiàn)了檢測報告統(tǒng)一、集成管理,便于對檢測報告數(shù)據(jù)進行分析,挖據(jù)數(shù)據(jù)背后潛在的應用價值。
1 系統(tǒng)的總體框架設(shè)計
系統(tǒng)選用Microsoft Visual Studio 2010作為主要開發(fā)平臺,選用C#為編程語言對微軟的Word 2010軟件進行定制,同時借助Word內(nèi)嵌的VBA對數(shù)據(jù)有效性進行驗證。系統(tǒng)的總體框圖如圖1所示,分為三部分,第一部分Word報告信息的自動化提取,該部分首先對現(xiàn)有報告進行分析,然后進行Word模板的設(shè)計以及外接程序的開發(fā),實現(xiàn)數(shù)據(jù)自動化提取。第二部分是數(shù)據(jù)庫的設(shè)計,本系統(tǒng)的數(shù)據(jù)庫一方面是存儲Word文檔提取的數(shù)據(jù),另一方面為Word報告的生成提供數(shù)據(jù)來源。第三部分是檢測報告的生成,根據(jù)數(shù)據(jù)庫中的數(shù)據(jù)和檢測報告模板,生成相應的檢測報告。
2 Word二次開發(fā)技術(shù)分析
軟件二次開發(fā),主要指的是對現(xiàn)有的某個軟件進行功能擴展、定制,用戶根據(jù)自身需求在該軟件平臺上進行第二次有針對性的開發(fā),一般來說都不會改變軟件原有的內(nèi)核。Word二次開發(fā),即是對Word辦公軟件進行二次開發(fā),主要的技術(shù)是VBA和VSTO。
VBA是一種完全面向?qū)ο篌w系結(jié)構(gòu)的編程語言,Word辦公軟件內(nèi)嵌了VBA,為用戶提供Word應用中的自定義功能。在Word 2010版本中,在開發(fā)工具菜單欄中,可以實現(xiàn)對宏的基本操作,如錄制、編輯和運行宏等。
VSTO對Word二次開發(fā)是一種全新的跨越,它基于Visual Studio開發(fā)平臺,將Word文檔或程序作為對象進行定制。在Visual Studio中,可以對常用Office組件進行文檔和外接程序的開發(fā)。
3 數(shù)據(jù)自動化提取
數(shù)據(jù)自動化提取模塊是系統(tǒng)的核心模塊,包括Word模板的定制和數(shù)據(jù)自動化提取程序的開發(fā)。其中模板定制使Word文檔格式統(tǒng)一,確保模板填寫數(shù)據(jù)的規(guī)范性和有效性。數(shù)據(jù)自動化提取程序根據(jù)需要從模板的特定位置上提取出數(shù)據(jù)。
3.1 Word模板的設(shè)計
Word模板設(shè)計的好壞關(guān)系到后續(xù)功能的實現(xiàn),因為數(shù)據(jù)自動化提取和檢測報告的生成,都是以模板為依托。Word模板的設(shè)計在現(xiàn)有檢測報告的基礎(chǔ)上完成的,它主要分為以下幾個步驟:
(1)分析現(xiàn)有的檢測報告,確定報告中那個位置上的數(shù)據(jù)需要被提取,然后用符號進行標記,如{R_001}、{R_002}等。
(2)將文檔保存為XML格式的文檔,然后用正則表達式相關(guān)技術(shù)對XML格式文檔中的特殊標記位置進行替換,使相應的位置轉(zhuǎn)換為書簽,后續(xù)文檔錄入實際上是對書簽文字進行編輯。
(3)將上一步驟的XML文件轉(zhuǎn)換為Doc文件,然后在利用VSTO的Word文檔定制功能,對Doc模板增加相應控件,如時間控件、圖片控件以及數(shù)據(jù)校驗按鈕。
(4)對特定要求的數(shù)據(jù)需要進行校驗,采用Office內(nèi)置的VBA編程技術(shù)對數(shù)據(jù)的有效性進行校驗,校驗的流程如圖2所示。
3.2 數(shù)據(jù)自動化提取程序設(shè)計
數(shù)據(jù)自動化提取程序是對設(shè)計模板上固定位置上的數(shù)據(jù)進行提取,是對Word程序功能的定制,在Word原有菜單欄項增加數(shù)據(jù)提取菜單欄,這里用到VSTO的外接程序的開發(fā)。為了降低程序的耦合性,提高代碼的重用性,程序在開發(fā)過程中采用了基于MVC三層架構(gòu)設(shè)計,包括模型層、視圖層、邏輯控制層,其中模型層是對Word底層模型進行重新組合與設(shè)計。邏輯控制層主要是對數(shù)據(jù)提取的邏輯模塊功能進行劃分,包括用戶管理模塊、數(shù)據(jù)提取模塊、數(shù)據(jù)上傳模塊。表示層主要是界面展示。
對于文字格式的信息可以直接根據(jù)位置進行提取,而對于圖片格式的數(shù)據(jù),需要進行轉(zhuǎn)換,因為在Word中圖片采用的是Base64的編碼格式,要想對Word中的圖片數(shù)據(jù)進行提取,首先要查找定位圖片對應的Base64編碼,然后將Base64編碼進行解碼轉(zhuǎn)換為圖片格式。主要代碼如下:
//將Base64編碼轉(zhuǎn)化為字節(jié)
Byte[] arr=convernt.FromBase64String(str);
//將字節(jié)保存到內(nèi)存流
MemoryStream ms = new MemoryStream(arr);
//轉(zhuǎn)化為Bitmap對象
Bitmap bmp = new Bitmap(ms);
//保存圖片
bmp.Save(txtFileName+\".jpg\",ImageFormat.Jpeg);
4 報告自動生成
目前汽車行業(yè)檢測機構(gòu)的專家在查看檢測報告時,往往要經(jīng)過很多流程,如向檢測人員提出申請,申請通過后通過郵件或者其它方式接受檢測結(jié)果,這種方式不僅流程繁瑣、操作不便,而且檢測報告也不便管理。通過報告自動生成技術(shù)可有效的解決上述問題,實現(xiàn)檢測報告的統(tǒng)一化、一站式的管理。
報告生成的流程如圖3所示,首先根據(jù)用戶選擇檢測報告生成的方式,按照時間順序或者用戶生成檢測報告,然后選擇報告編號和報告模板進行數(shù)據(jù)填充,并對錯誤信息進行提示。
5 總結(jié)
本文設(shè)計了基于VSTO的Word數(shù)據(jù)自動化提取及報告生成的系統(tǒng),實現(xiàn)了Word 文檔的數(shù)據(jù)自動、準確、規(guī)范采集及報告實時生成,實現(xiàn)了檢測報告數(shù)據(jù)統(tǒng)一化、規(guī)范化管理。
參考文獻:
[1]葉明,張錚.基于C.NET的Word報告生成功能開發(fā)[J].計算機工程與應用,2008,44(9):104-106.
[2]魯保玉,楊新芳.用Delphi生成Word報告及動態(tài)結(jié)構(gòu)表格[J].計算機軟件與應用,2007,4(3):180-183.
[3]王二暖.基于C#的Word2010文檔自動生成系統(tǒng)[J].電腦開發(fā)與應用,2011,05.
[4]羅許練.基于C#.NET的動態(tài)Word文檔生成及數(shù)據(jù)填充研究[J].惠州學院學報,2009,6(29).
[5]閆新珠,王秀芹.在VC中利用Word生成測量報告[J].地礦測繪,2006,22(1):32-33.
作者簡介:惠怡靜(1975-),女,天津人,副主任,工程師,學士學位,研究方向:汽車行業(yè)信息平臺建設(shè)、汽車行業(yè)政策研究;邵學彬(1986-),男,山東菏澤人,職員,工程師,碩士,研究方向:數(shù)據(jù)挖掘、軟件開發(fā)技術(shù)、汽車行業(yè)數(shù)據(jù)服務平臺開發(fā)與建設(shè);程旭(1978-),男,天津人,項目經(jīng)理,工程師,碩士,主要研究領(lǐng)域:數(shù)據(jù)挖掘、企業(yè)信息化等。
作者單位:中國汽車技術(shù)研究中心 數(shù)據(jù)資源中心,北京 100176
基金項目:中國汽車技術(shù)研究中心科研項目(12130109)。