婁國哲
【摘要】 本文對比了常用的Word報表生成技術(shù)的特點,介紹了基于WordXML技術(shù)實現(xiàn)Word報表的優(yōu)勢和流程,并以一個實際應(yīng)用中的范例給予了說明。
【關(guān)鍵詞】 Word報表 WordXML 自動生成
自動化辦公系統(tǒng)中,報表組件是必不可少的組成部分。報表組件的種類繁多,使用的技術(shù)也不盡相同。常用的商業(yè)化報表組件功能強大,支持多種輸出格式,但與Word格式完美兼容的不多。在一些習慣使用Word作為辦公文檔的單位中,Word報表的生成技術(shù)仍然不可或缺。
一、Word報表生成技術(shù)對比
Word報表的生成技術(shù)大致分為兩類:。
(一)使用COM接口操作Word對象。該方法可以充分利用微軟提供的API實現(xiàn)各種復(fù)雜的操作,但也存在明顯的不足。首先,應(yīng)用程序依賴Office COM接口意味著報表生成過程無法脫離Office運行環(huán)境,從而無法實現(xiàn)跨平臺;其次,Office COM接口的執(zhí)行效率一直為開發(fā)者和使用者所詬??;再次COM技術(shù)較為復(fù)雜,一般用戶難以完成報表模板的定義工作。
(二)使用XML技術(shù)操作Word XML對象。該方法是Office2003以上版本支持的方法,該方法的共同點是報表的生成不再依賴Office接口,而且效率極高。該類方法又可細分為兩種。一種方法是使用類似FreeMarker的模板引擎來生成Word報表。該方法要求精通XML技術(shù)的開發(fā)人員使用XML編輯器來定義模板,模板定義好后不再支持使用Office對此文檔進行再編輯,也不方便開發(fā)人員修改模板;另一種方法是使用WordProcessingXML(簡稱WordML)技術(shù)來生成Word報表。該方法中使用的模板可以通過Office直接定義,這樣既降低了開發(fā)難度,同時也方便了用戶對模板的二次定制和數(shù)據(jù)復(fù)用。
二、基于WordXML技術(shù)的Word報表生成流程
報表的生成一般方法是通過某種規(guī)則將數(shù)據(jù)自動填充到預(yù)定的報表模版中?;赪ordXML技術(shù)的Word報表生成流程一般分為四步:
(一)根據(jù)報表數(shù)據(jù)生成XML架構(gòu)文件。報表中填充的數(shù)據(jù)必須是定義良好的XML文檔,而對XML文檔格式的最佳描述是XML架構(gòu)文件(XSD文件)。Word模板定義過程的依據(jù)即是XML數(shù)據(jù)的架構(gòu)文件。XML架構(gòu)文件的生成方法很多,Visual Studio中提供的XSD命令可以根據(jù)實體類生成對應(yīng)的XSD;XMLSpy軟件可以通過XML數(shù)據(jù)文件自動生成架構(gòu)文件。
(二)定義Word報表模板文件。首先打開Word軟件,新建或選擇Word模板文件,導(dǎo)入第一步中生成的XML架構(gòu)文件;然后通過鼠標將XML架構(gòu)中的節(jié)點與模板中的內(nèi)容一一對應(yīng)起來,注意要按照先父節(jié)點后子節(jié)點的順序進行操作;最后將模板保存為XML格式。
(三)生成XSLT轉(zhuǎn)換文件。Word報表模板是XML文件,Word報表也是XML文件。我們可以使用擴展樣式表語言(XLST)自動完成模版文件到報表文件的自動轉(zhuǎn)換。微軟提供了由模板生成XLST文件的工具(WML2XSLT,可以從微軟提供的Word 2003:XML SDK中下載),該工具提供了命令行接口完成XLST文件的自動生成。
(四)使用報表數(shù)據(jù)生成最終報表。有了XLST文件,就可以將定義良好的XML數(shù)據(jù)直接轉(zhuǎn)換為最終報表。我們可以使用任何一種支持XML的編程語言編寫報表生成程序,也可以使用第三方XML編輯器完成自動轉(zhuǎn)化(如XMLSpy等)。
三、實際應(yīng)用舉例
我們以個人信息報告表為例來說明報表的生成流程。報告表中所使用的人員數(shù)據(jù)主要包括基本信息、培訓(xùn)履歷和工作履歷三部分內(nèi)容,如圖1所示。其中,基本信息包含了姓名、性別、出生時間等十幾個信息項;培訓(xùn)履歷最多允許填寫四條記錄,主要包含了起始時間、終止時間、院校名稱、所學(xué)專業(yè)和獲得學(xué)位5個信息項。
報告表模板中包含了多個表格。Word使用粉紅色文本框(可以隱藏)顯示XML文章中節(jié)點與文章中位置的對應(yīng)關(guān)系格的某個單元格,如圖2所示:基本信息中的每一個信息項對應(yīng)了表格中的某個單元格;培訓(xùn)履歷記錄對應(yīng)了第二個表格中的明細行。 根據(jù)XML格式人員數(shù)據(jù)生成報告表后,人員數(shù)據(jù)將替圖2中的標簽。如果培訓(xùn)履歷中有多條記錄,則會在對應(yīng)表格中新插入新行以顯示數(shù)據(jù)。
四、結(jié)語
基于WordXML技術(shù)的Word報表生成方法不僅簡單易上手,而且具有良好的可擴展性。雖然自O(shè)ffice 2012后Word不再支持這種定義機制,但此方法仍有不少的應(yīng)用場景。
參 考 文 獻
[1] Microsoft Corporation. Overview of WordprocessingML[EB/OL]. http://rep.oio.dk/Microsoft.com/officeschemas/ welcome.htm,2015-3
[2] W3School. XSLT 教程[EB/OL].http://www.w3school.com.cn/xsl/index.asp, 2015-3
[3] 唐雪梅. 利用XML格式解析原理批量進行成果資料格式檢查. 物探化探計算技術(shù)[J],2013(05):617.