基于VSTO的Word數(shù)據(jù)自動化提取及報告生成系統(tǒng)的應用技術(shù)_第1頁
基于VSTO的Word數(shù)據(jù)自動化提取及報告生成系統(tǒng)的應用技術(shù)_第2頁
基于VSTO的Word數(shù)據(jù)自動化提取及報告生成系統(tǒng)的應用技術(shù)_第3頁
全文預覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、基于VSTO的Word數(shù)據(jù)自動化提取及報告生成系統(tǒng)的應用技術(shù)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)了檢測報

2、告統(tǒng)一、集成管理,便于對檢測報告數(shù)據(jù)進行分析,挖據(jù)數(shù)據(jù)背后潛在的應用價值。1 系統(tǒng)的總體框架設計系統(tǒng)選用Microsoft Visual Studio 2010作為主要開發(fā)平臺,選用C#為編程語言對微軟的Word 2010軟件進行定制,同時借助Word內(nèi)嵌的VBA對數(shù)據(jù)有效性進行驗證。系統(tǒng)的總體框圖如圖1所示,分為三部分,第一部分Word報告信息的自動化提取,該部分首先對現(xiàn)有報告進行分析,然后進行Word模板的設計以及外接程序的開發(fā),實現(xiàn)數(shù)據(jù)自動化提取。第二部分是數(shù)據(jù)庫的設計,本系統(tǒng)的數(shù)據(jù)庫一方面是存儲Word文檔提取的數(shù)據(jù),另一方面為Word報告的生成提供數(shù)據(jù)來源。第三部分是檢測報告的生成,

3、根據(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

4、開發(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模板的設計Word模板設計的好壞關(guān)系到后續(xù)功能的實現(xiàn),因為數(shù)據(jù)自動化提取和檢測報告的生成,都是以模板為依托。Word模板的設計在現(xiàn)有檢測報告的基礎上完成的,它主要分為以下幾個步驟:(1)分析現(xiàn)有的檢測報告,確定報告中那個位

5、置上的數(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ù)據(jù)自動化提取程序是對設計模板上固定位置上的數(shù)據(jù)進行提取,是對W

6、ord程序功能的定制,在Word原有菜單欄項增加數(shù)據(jù)提取菜單欄,這里用到VSTO的外接程序的開發(fā)。為了降低程序的耦合性,提高代碼的重用性,程序在開發(fā)過程中采用了基于MVC三層架構(gòu)設計,包括模型層、視圖層、邏輯控制層,其中模型層是對Word底層模型進行重新組合與設計。邏輯控制層主要是對數(shù)據(jù)提取的邏輯模塊功能進行劃分,包括用戶管理模塊、數(shù)據(jù)提取模塊、數(shù)據(jù)上傳模塊。表示層主要是界面展示。對于文字格式的信息可以直接根據(jù)位置進行提取,而對于圖片格式的數(shù)據(jù),需要進行轉(zhuǎn)換,因為在Word中圖片采用的是Base64的編碼格式,要想對Word中的圖片數(shù)據(jù)進行提取,首先要查找定位圖片對應的Base64編碼,然后將

7、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é)果,這種方式不僅

8、流程繁瑣、操作不便,而且檢測報告也不便管理。通過報告自動生成技術(shù)可有效的解決上述問題,實現(xiàn)檢測報告的統(tǒng)一化、一站式的管理。報告生成的流程如圖3所示,首先根據(jù)用戶選擇檢測報告生成的方式,按照時間順序或者用戶生成檢測報告,然后選擇報告編號和報告模板進行數(shù)據(jù)填充,并對錯誤信息進行提示。5 總結(jié)本文設計了基于VSTO的Word數(shù)據(jù)自動化提取及報告生成的系統(tǒng),實現(xiàn)了Word 文檔的數(shù)據(jù)自動、準確、規(guī)范采集及報告實時生成,實現(xiàn)了檢測報告數(shù)據(jù)統(tǒng)一化、規(guī)范化管理。參考文獻:【1】葉明,張錚.基于C.NET的Word報告生成功能開發(fā).計算機工程與應用,2008,44(9):104-106.【2】魯保玉,楊新芳.用Delphi生成Word報告及動態(tài)結(jié)構(gòu)表格.計算機軟件與應用,2007,4(3):180-183.【3】王二暖.基于C#的Word20

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論