專利名稱:基于動(dòng)態(tài)網(wǎng)頁的可擴(kuò)展的Word報(bào)告自動(dòng)生成方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于動(dòng)態(tài)網(wǎng)頁的可擴(kuò)展的Word報(bào)告自動(dòng)生成方法。
背景技術(shù):
Word是世界上使用范圍最廣泛的文字處理系統(tǒng),每天都有大量的word報(bào)告需要 編制,例如在服務(wù)器運(yùn)行日常管理工作中,針對(duì)每一臺(tái)服務(wù)器的運(yùn)行情況都需要編寫日?qǐng)?bào)、 周報(bào)、月報(bào)、季報(bào)和年報(bào)。這些報(bào)告的格式幾乎都是固定的,只是其中涉及的具體參數(shù)和數(shù) 據(jù)不同而已。如果僅依靠人工進(jìn)行處理,大量的查詢、復(fù)制和粘貼工作不但繁瑣、耗時(shí),效率 低下,而且還容易出錯(cuò),降低了報(bào)告的準(zhǔn)確性。因此,研究word報(bào)告的自動(dòng)生成功能具有重 要的應(yīng)用價(jià)值。目前,Word報(bào)告自動(dòng)生成方法有以下幾種1.文檔光標(biāo)跟蹤定位方法(葉明,張諍,基于C#.NET的Word報(bào)告生成功能開發(fā), 計(jì)算機(jī)工程與應(yīng)用,2008,44 (9) 104-106)。該方法的主要原理是通過跟蹤和控制Word文檔內(nèi)部光標(biāo)的位置來控制文檔內(nèi)容 的起始和相應(yīng)的格式,并在相應(yīng)位置上插入指定的內(nèi)容。其缺點(diǎn)是報(bào)告的版面、樣式和內(nèi) 容必須通過程序順序輸入;此外,該方案不夠完整,沒有涉及用戶對(duì)數(shù)據(jù)信息的篩選操作。2.利用OLE或COM技術(shù)直接控制Word (魯保玉,楊新芳,用Delphi生成Word報(bào) 告及動(dòng)態(tài)結(jié)構(gòu)表格,計(jì)算機(jī)軟件與應(yīng)用,2007,4(3) 180-183 ;孔令彥,黃蓬勃,姜青香等, 使用Visual Basic操縱Microsoft Word對(duì)象生成報(bào)告文檔,計(jì)算機(jī)工程與應(yīng)用,2003, 39(36) 115-117)。該方法的主要原理是利用OLE或COM技術(shù)直接控制Word,將數(shù)據(jù)庫(kù)表結(jié)構(gòu)中的列 信息作為標(biāo)簽插入Word文檔中以定義模板,在Word中添加自定義窗體連接數(shù)據(jù)庫(kù),在生成 文檔時(shí)從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù),并自動(dòng)填寫到模板中的相應(yīng)位置上。缺點(diǎn)是采用C/S結(jié)構(gòu),部 署不夠方便;并且需要擴(kuò)展Word的窗口作為數(shù)據(jù)選擇的界面,自定義數(shù)據(jù)編輯窗體與Word 現(xiàn)有界面項(xiàng)目限制,交互體驗(yàn)差;此外,生成報(bào)告后,無法在此基礎(chǔ)上進(jìn)行二次數(shù)據(jù)查詢轉(zhuǎn) 換;最關(guān)鍵的是,用戶還必須熟悉數(shù)據(jù)庫(kù)結(jié)構(gòu)及數(shù)據(jù)庫(kù)表的列信息。3.基于多種技術(shù)的Word文檔自動(dòng)生成方法(葛芬,吳寧,基于多種技術(shù)的Word設(shè) 計(jì)文檔自動(dòng)生成平臺(tái),電子科技大學(xué)學(xué)報(bào),2007,36 (2))。該方法的主要原理是利用VBA將一篇規(guī)范的通用文檔中可允許被替換的部分采 用插入批注的形式設(shè)置標(biāo)簽,并把文檔及其中的標(biāo)簽信息存儲(chǔ)到數(shù)據(jù)庫(kù)服務(wù)器中,下一步 在Asp頁面上提供輸入框由用戶為標(biāo)簽賦值,最后利用用戶輸入值替換通用文檔中標(biāo)簽處 的內(nèi)容生成新的文檔。其缺點(diǎn)是VBA程序全部嵌入到客戶端Word應(yīng)用程序中,部署不夠 方便;并且VBA界面元素不夠豐富,只支持簡(jiǎn)單的文本錄入形式,對(duì)于表格、圖片等沒有后 臺(tái)方法支持。4.使用報(bào)表引擎生成指定格式的Word文檔。該方法的主要原理是由報(bào)表定義工 具提供可視化的手段讓用戶定義報(bào)表結(jié)構(gòu),抽取的字段和抽取后的二次計(jì)算規(guī)則由用戶自
4定義,在生成報(bào)表的時(shí)候由報(bào)表引擎完成對(duì)數(shù)據(jù)庫(kù)的訪問并在相應(yīng)位置完成數(shù)據(jù)替換以生 成中間格式的報(bào)表,然后再通過輸出轉(zhuǎn)換工具,轉(zhuǎn)換成Word文件。典型的產(chǎn)品如水晶報(bào)表、 潤(rùn)乾報(bào)表、用友的Cell等。其缺點(diǎn)是無法滿足復(fù)雜的業(yè)務(wù)邏輯。雖然報(bào)表引擎一般提供 了特定的語言以編程的形式實(shí)現(xiàn)數(shù)據(jù)計(jì)算,但是也僅限于完成簡(jiǎn)單的處理,對(duì)于像“海量數(shù) 據(jù)的任意時(shí)間區(qū)間的均值/極值的趨勢(shì)圖繪制”,以及實(shí)現(xiàn)數(shù)據(jù)替換后的可編輯操作這樣的 復(fù)雜業(yè)務(wù),仍然難以勝任。由此可見,目前還沒有一種基于B/S結(jié)構(gòu)的,部署方便、界面元素豐富、交互體驗(yàn) 好、支持二次編輯并且具備良好擴(kuò)展性的Word報(bào)告自動(dòng)生成方法。
發(fā)明內(nèi)容
為了擺脫Word對(duì)數(shù)據(jù)訪問界面的限制,獲得良好的交互性體驗(yàn),同時(shí)不增加模板 定制和報(bào)告編寫人員的負(fù)擔(dān),保證系統(tǒng)的高效性和可擴(kuò)展性,本發(fā)明提供了一種全新的方 法,它將數(shù)據(jù)查詢方法封裝為數(shù)據(jù)占位符,然后把數(shù)據(jù)占位符插入Word文檔中定制報(bào)告模 板;利用報(bào)告模板生成動(dòng)態(tài)頁面,頁面調(diào)用數(shù)據(jù)查詢方法讀取、展示、編輯信息;最終利用 這些信息替換報(bào)告模板中的數(shù)據(jù)占位符生成最終的報(bào)告。使用該方法,通過Word定制報(bào)告 模板,對(duì)模板定制人員沒有額外的技術(shù)要求;在頁面中展示、編輯數(shù)據(jù)信息,保證良好的用 戶操作體驗(yàn),交互性強(qiáng);利用信息替換數(shù)據(jù)占位符生成報(bào)告,支持在線的報(bào)告局部反復(fù)多次 編輯;可定制任意復(fù)雜的業(yè)務(wù)處理方法,并且支持運(yùn)行時(shí)動(dòng)態(tài)添加數(shù)據(jù)查詢方法文件,具備 良好的可擴(kuò)展性。本發(fā)明采用的技術(shù)方案如下一種基于動(dòng)態(tài)網(wǎng)頁的可擴(kuò)展的Word報(bào)告自動(dòng)生成方法,包括以下步驟1)擴(kuò)展數(shù)據(jù)處理方法為每一個(gè)數(shù)據(jù)處理方法添加一條唯一的表明方法功能和用途的描述信息,并通過 編譯器或者解釋器生成一個(gè)可以被其他應(yīng)用程序共享的模塊或者文件即數(shù)據(jù)處理方法共 享文件;2)創(chuàng)建數(shù)據(jù)處理方法對(duì)應(yīng)的標(biāo)簽利用反射技術(shù)從數(shù)據(jù)處理方法共享文件中解析數(shù)據(jù)處理方法的描述信息,并分類 整理封裝為標(biāo)簽,標(biāo)簽由標(biāo)簽頭即標(biāo)簽類型和標(biāo)簽體兩部分組成,標(biāo)簽頭和標(biāo)簽體是一對(duì) 多的關(guān)系;3)定制報(bào)告模板利用標(biāo)簽定制一份Word形式的報(bào)告模板;4)用報(bào)告模板生成動(dòng)態(tài)網(wǎng)頁5)生成word報(bào)告根據(jù)動(dòng)態(tài)網(wǎng)頁中收集的數(shù)據(jù)信息替換Word報(bào)告模板中的數(shù)據(jù)占位符,生成Word報(bào)告。所述步驟3)進(jìn)一步細(xì)分為以下子步驟3. 1)擴(kuò)展Word菜單并添加選擇標(biāo)簽的窗口 ;3.2)定義報(bào)告的章節(jié);3. 3)選擇標(biāo)簽類型;
3. 4)選擇標(biāo)簽體;3. 5)把選擇的標(biāo)簽組合以書簽的方式作為數(shù)據(jù)占位符放在相應(yīng)的章節(jié)下;3. 6)將這份包含數(shù)據(jù)占位符的Word文檔保存為一份Word文件作為報(bào)告模板。所述步驟4)進(jìn)一步細(xì)分為以下子步驟4. 1)從Word報(bào)告模板中以遍歷書簽的方式查找數(shù)據(jù)占位符并讀取它的值即數(shù)據(jù) 處理方法的描述信息;4. 2)通過反射技術(shù)和描述信息、數(shù)據(jù)處理方法的一一對(duì)應(yīng)關(guān)系,找到數(shù)據(jù)處理方 法;4.3)反射數(shù)據(jù)處理方法的返回值類型并據(jù)此確定數(shù)據(jù)的Aspx展示控件,此Aspx 為一種動(dòng)態(tài)網(wǎng)絡(luò)編程的網(wǎng)絡(luò)語言;4. 4)把報(bào)告模板保存為Html形式;4. 5)利用正則表達(dá)式刪除Html文件中的注釋和樣式等信息添加Aspx頁面需要的 fn息;4.6)通過模板引擎技術(shù)用Aspx數(shù)據(jù)展示控件替換Html中數(shù)據(jù)占位符,生成動(dòng)態(tài) 頁面;4. 7)根據(jù)報(bào)告模板中的數(shù)據(jù)占位符,生成動(dòng)態(tài)頁面對(duì)應(yīng)的后臺(tái)處理文件,調(diào)用每 一個(gè)數(shù)據(jù)占位符對(duì)應(yīng)的數(shù)據(jù)處理方法讀取數(shù)據(jù)并與動(dòng)態(tài)頁面中的數(shù)據(jù)展示組件綁定;4. 8)通過訪問Aspx頁面完成對(duì)報(bào)告的編輯。在所述步驟5)中,如果傳過來的數(shù)據(jù)是文本、表格和圖片,就按數(shù)據(jù)的格式替換 模板中的數(shù)據(jù)占位符,如果傳過來的數(shù)據(jù)是字節(jié)數(shù)組,就把數(shù)據(jù)轉(zhuǎn)換為圖片并用圖片替換 模版中的數(shù)據(jù)占位符,如果傳過來的數(shù)據(jù)是文件路徑,就先讀取文件路徑指向的文件的內(nèi) 容并以此替換模板中的數(shù)據(jù)占位符,最終利用數(shù)據(jù)替換模板中所有的數(shù)據(jù)占位符并保存為 一份Word文件作為Word報(bào)告。本發(fā)明具有以下優(yōu)點(diǎn)1.通過Word定制報(bào)告模板,對(duì)模板定制人員沒有額外的技術(shù)要求;2.為模板生成動(dòng)態(tài)網(wǎng)頁,界面元素豐富,用戶交互性好;3.利用信息替換數(shù)據(jù)占位符生成報(bào)告,支持在線的報(bào)告局部反復(fù)多次編輯;4.支持任意復(fù)雜的業(yè)務(wù)處理方法定制和運(yùn)行時(shí)動(dòng)態(tài)添加數(shù)據(jù)查詢方法文件,具備 良好的可擴(kuò)展性。
圖1是本發(fā)明的整體流程圖;圖2為數(shù)據(jù)處理方法文件內(nèi)容的示意圖;圖3是定制報(bào)告模板流程圖;圖4是報(bào)告模板示意圖;圖5是生成動(dòng)態(tài)頁面流程圖;圖6是動(dòng)態(tài)網(wǎng)頁圖;圖7是生成的Word報(bào)告示意圖;圖8是可擴(kuò)展流程6
圖9是本發(fā)明實(shí)施的系統(tǒng)組成圖;圖10是Word報(bào)告模板、數(shù)據(jù)查詢方法文件、數(shù)據(jù)庫(kù)、Word報(bào)告之間的關(guān)系圖。
具體實(shí)施例方式本發(fā)明提供了一種基于動(dòng)態(tài)網(wǎng)頁的可擴(kuò)展的Word報(bào)告自動(dòng)生成方法。如圖1所 示,該方法包括以下步驟1.數(shù)據(jù)處理方法擴(kuò)展利用特性(Attribute)為每一個(gè)數(shù)據(jù)處理方法添加一條唯一的、表明方法功能和 用途的描述信息,然后通過編譯器或者解釋器將此添加了描述信息的數(shù)據(jù)處理方法生成一 個(gè)可以被其他應(yīng)用程序共享的模塊或者文件,即數(shù)據(jù)處理方法共享文件。例如一個(gè)功能為 查詢商品本年度的出庫(kù)、入庫(kù)記錄的方法對(duì)應(yīng)的描述信息為倉(cāng)庫(kù)管理-查詢商品本年度的 出入庫(kù)信息(圖2)。這樣數(shù)據(jù)處理方法和描述信息就形成了一對(duì)一的對(duì)應(yīng)關(guān)系。通過為數(shù)據(jù)處理方法擴(kuò)展一一對(duì)應(yīng)的描述信息,在描述信息、數(shù)據(jù)處理方法、數(shù)據(jù) 庫(kù)和數(shù)據(jù)間建立了從描述信息到數(shù)據(jù)處理方法、從數(shù)據(jù)處理方法到數(shù)據(jù)庫(kù)、從數(shù)據(jù)庫(kù)到數(shù) 據(jù)的關(guān)系鏈,因此可以通過選擇描述信息的方式來選擇數(shù)據(jù)。2.創(chuàng)建數(shù)據(jù)處理方法對(duì)應(yīng)的標(biāo)簽反射(Reflection)是.NET中的重要機(jī)制,通過反射可以在運(yùn)行時(shí)獲得.NET中每 一個(gè)類型(包括類、結(jié)構(gòu)、委托、接口和枚舉等)的成員,包括方法、屬性、事件,以及構(gòu)造函 數(shù)等;還可以獲得每個(gè)成員的名稱、限定符和參數(shù)等。利用反射技術(shù)從數(shù)據(jù)處理方法共享文 件中解析出數(shù)據(jù)處理方法的描述信息,并分類整理封裝為標(biāo)簽,此標(biāo)簽由標(biāo)簽頭即標(biāo)簽類 型和標(biāo)簽體兩部分組成,標(biāo)簽頭和標(biāo)簽體是一對(duì)多的關(guān)系。例如,在對(duì)倉(cāng)庫(kù)管理-查詢商品 本年度的出入庫(kù)信息進(jìn)行封裝的標(biāo)簽中,標(biāo)簽類型為倉(cāng)庫(kù)管理,標(biāo)簽體為查詢商品本年度 的出入庫(kù)信息。3.定制報(bào)告模板利用標(biāo)簽定制一份Word文檔形式的報(bào)告模板,該報(bào)告模板為由報(bào)告的章節(jié)標(biāo)題 和數(shù)據(jù)占位符組成的報(bào)告框架。定制報(bào)告模板的流程如圖3所示利用Vsto (Visual Studio Tools for Office)技術(shù)擴(kuò)展 Word 菜單,即在 Word 啟 動(dòng)時(shí)自動(dòng)在Word菜單欄添加一個(gè)名為“報(bào)告模板定制”的菜單,和一個(gè)名為“選擇數(shù)據(jù)”的
子菜單;輸入報(bào)告的章節(jié)標(biāo)題并設(shè)置章節(jié)標(biāo)題的樣式和編號(hào),例如6本年度商品出入庫(kù) 情況;在點(diǎn)擊“選擇數(shù)據(jù)”后,添加選擇標(biāo)簽的窗口 ;選擇標(biāo)簽類型,例如選擇標(biāo)簽類型為倉(cāng)庫(kù)管理;選擇標(biāo)簽體,例如選擇標(biāo)簽體為查詢商品本年度的出入庫(kù)信息;把選擇的標(biāo)簽組合以書簽的方式作為數(shù)據(jù)占位符放在相應(yīng)的章節(jié)下,為了區(qū)別于 普通文本,可以為數(shù)據(jù)占位符設(shè)置一些特殊的樣式。數(shù)據(jù)占位符是位于報(bào)告模板中但最終 會(huì)被數(shù)據(jù)庫(kù)中的一組數(shù)據(jù)集替換的文本,它標(biāo)記了數(shù)據(jù)在文檔中的位置;將這份包含數(shù)據(jù)占位符的Word文檔保存為一份Word文件作為報(bào)告模板。例如倉(cāng)庫(kù)管理類別下的查詢商品本年度的出入庫(kù)信息作為數(shù)據(jù)占位符放在章節(jié)商品本年度出入庫(kù)情況中(圖4)。可見,在報(bào)告模板、數(shù)據(jù)占位符、描述信息間已經(jīng)建立了一條從報(bào)告模板到數(shù)據(jù) 占位符、從數(shù)據(jù)占位符到描述信息的關(guān)系鏈,以描述信息作為橋梁就可以與另一條關(guān)系鏈 (從描述信息到數(shù)據(jù)處理方法、從數(shù)據(jù)處理方法到數(shù)據(jù)庫(kù)、從數(shù)據(jù)庫(kù)到數(shù)據(jù))連接,這就構(gòu) 成了從報(bào)告模板到數(shù)據(jù)占位符、從數(shù)據(jù)占位符到描述信息、從描述信息到數(shù)據(jù)處理方法、從 數(shù)據(jù)處理方法到數(shù)據(jù)庫(kù)、從數(shù)據(jù)庫(kù)到數(shù)據(jù)的完整的關(guān)系鏈,建立了模板與數(shù)據(jù)的關(guān)聯(lián)關(guān)系。4.用模板生成動(dòng)態(tài)網(wǎng)頁生成動(dòng)態(tài)網(wǎng)頁的流程如圖5所示,利用Vsto技術(shù)從Word報(bào)告模板中以遍歷書簽 的方式查找數(shù)據(jù)占位符并讀取它的值即數(shù)據(jù)處理方法的描述信息;通過反射技術(shù)和描述信息、數(shù)據(jù)處理方法的一一對(duì)應(yīng)關(guān)系,找到數(shù)據(jù)處理方法;反射數(shù)據(jù)處理方法的返回值類型并據(jù)此確定數(shù)據(jù)的Aspx (—種網(wǎng)絡(luò)編程語言)展 示控件,例如方法的返回值為文本則對(duì)應(yīng)Aspx的多行文本框,方法的返回值為表格和對(duì) 象集合則對(duì)應(yīng)Aspx的表格類控件,方法的返回值是圖片或者字節(jié)數(shù)組則對(duì)應(yīng)Aspx的圖片 框等等;利用Vsto把報(bào)告模板保存為Html (HyperText Markup Language或超文本置標(biāo)語 言)形式;利用正則表達(dá)式刪除Html文件中的注釋和樣式等信息,添加Aspx頁面需要的頭 信息、Js (Javascript,一種計(jì)算機(jī)腳本語言)和Css (Cascading Style Sheet或級(jí)聯(lián)樣式 表)等信息;通過模板引擎技術(shù)用Aspx數(shù)據(jù)展示控件(TextBox、GridView和PictureBox等) 替換Html中數(shù)據(jù)占位符,生成動(dòng)態(tài)頁面;利用模板引擎語言編寫一份準(zhǔn)后臺(tái)處理文件,然后由模板引擎把其中的模板引擎 變量標(biāo)識(shí)符替換成報(bào)告模板中的數(shù)據(jù)占位符對(duì)應(yīng)的數(shù)據(jù)處理方法,生成與動(dòng)態(tài)頁面對(duì)應(yīng)的 后臺(tái)處理文件,調(diào)用每一個(gè)數(shù)據(jù)處理方法從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)并與動(dòng)態(tài)頁面中的數(shù)據(jù)展示 控件綁定;通過訪問Aspx頁面完成對(duì)報(bào)告的編輯,其結(jié)構(gòu)與最終的Word報(bào)告一致,但是可以 進(jìn)行局部反復(fù)的查詢和修改,并且支持中途保存即保存已做的編輯但不生成報(bào)告。例如商 品本年度出入庫(kù)情況章節(jié)在頁面的效果如圖6所示。5.生成word報(bào)告根據(jù)頁面?zhèn)鬟^來的數(shù)據(jù)信息替換Word報(bào)告模板中的數(shù)據(jù)占位符,生成Word報(bào)告。 如果傳過來的數(shù)據(jù)是文本、表格和圖片,就按數(shù)據(jù)的格式替換Word報(bào)告模板中的數(shù)據(jù)占位 符;如果傳過來的數(shù)據(jù)是字節(jié)數(shù)組,就把數(shù)據(jù)轉(zhuǎn)換為圖片并用圖片替換模版中的數(shù)據(jù)占位 符;如果傳過來的數(shù)據(jù)是文件路徑,就先讀取文件路徑指向的文件的內(nèi)容并以此替換Word 報(bào)告模板中的數(shù)據(jù)占位符。最終利用數(shù)據(jù)替換Word報(bào)告模板中所有的數(shù)據(jù)占位符并保存 成一份Word文件作為Word報(bào)告。例如由倉(cāng)庫(kù)管理-查詢商品本年度的出入庫(kù)信息獲取 的數(shù)據(jù)是一段文本和一張圖片,替換后的結(jié)果如圖7所示。此外,以數(shù)據(jù)查詢方法為基礎(chǔ)也使得本發(fā)明擁有良好的可擴(kuò)展性,本發(fā)明支持以 兩種方式在運(yùn)行時(shí)動(dòng)態(tài)地添加數(shù)據(jù)查詢方法。第一種方式將編譯好的包含數(shù)據(jù)查詢方法 的Dll (Dynamic Link Library,是一個(gè)包含可由多個(gè)程序共享的代碼和數(shù)據(jù)的庫(kù))文件放入指定目錄下,負(fù)責(zé)數(shù)據(jù)查詢方法解析的服務(wù)監(jiān)測(cè)到這一事件后,遍歷目錄下新增加的數(shù) 據(jù)查詢方法文件并逐一加載,提取可用的數(shù)據(jù)查詢方法及其描述信息,并提交給上層的模 板定制和報(bào)告頁面等使用。第二種方式如圖8所示在自定義數(shù)據(jù)查詢方法頁面,輸入數(shù)據(jù) 查詢接口的參數(shù)、返回值、用途及其他信息,自動(dòng)生成代碼服務(wù),據(jù)此生成一份數(shù)據(jù)訪問方 法源文件,并提交給自動(dòng)編譯服務(wù),自動(dòng)編譯服務(wù)完成編譯并將編譯后的Dll文件轉(zhuǎn)移到 指定目錄下,由第一種方式進(jìn)一步處理。本發(fā)明方法已經(jīng)在某實(shí)時(shí)支持系統(tǒng)中得到完全實(shí)施。如圖9所示,該系統(tǒng)采用B/S 架構(gòu),使用IIS作為應(yīng)用服務(wù)器,國(guó)產(chǎn)通用數(shù)據(jù)庫(kù)作為數(shù)據(jù)庫(kù)服務(wù)器,開發(fā)了一系列的aspx 頁面和COM組件部署在IIS服務(wù)器上。我們成功實(shí)現(xiàn)了日、周、月、季、年等報(bào)告模板的定 制,并利用這些模板完成了分析報(bào)告的自動(dòng)生成。從圖中可以看出數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)服務(wù) 器中;Word報(bào)告模板由客戶端創(chuàng)建并最終存儲(chǔ)在應(yīng)用服務(wù)器上;包含數(shù)據(jù)查詢方法及其描 述信息的文件存儲(chǔ)在應(yīng)用服務(wù)器上;而出于安全性的考慮,由報(bào)告模板生成的Word報(bào)告最 終也保存在數(shù)據(jù)庫(kù)服務(wù)器上。圖10反映了 Word報(bào)告模板、數(shù)據(jù)查詢方法文件、數(shù)據(jù)庫(kù)、Word報(bào)告之間的關(guān)系。 首先,定制模板時(shí),利用數(shù)據(jù)查詢方法文件中的數(shù)據(jù)查詢方法描述信息作為Word報(bào)告模板 中的數(shù)據(jù)占位符,為Word報(bào)告模板與數(shù)據(jù)庫(kù)的數(shù)據(jù)之間建立了聯(lián)系,而數(shù)據(jù)查詢方法就是 橋梁。其次,生成報(bào)告時(shí),把Word報(bào)告模板轉(zhuǎn)為Html文件,把Html文件中的數(shù)據(jù)占位符替 換為Aspx數(shù)據(jù)展示控件生成Aspx頁面,在Aspx后臺(tái)處理文件中調(diào)用數(shù)據(jù)查詢方法獲取的 數(shù)據(jù)并與Aspx頁面控件綁定,最后利用Aspx后臺(tái)傳回的數(shù)據(jù)替換Word報(bào)告模板中的數(shù)據(jù) 占位符,從而生成Word報(bào)告并存入數(shù)據(jù)庫(kù)。通過本發(fā)明方法的應(yīng)用,該系統(tǒng)成功實(shí)現(xiàn)了分析報(bào)告(日、周、月、季、年)的自動(dòng) 生成,大大減輕了報(bào)告編寫人員的日常工作負(fù)擔(dān)。與此同時(shí),模板定制和報(bào)告生成對(duì)于人員 沒有額外的技術(shù)要求,便于系統(tǒng)的實(shí)施和推廣;數(shù)據(jù)的查詢、編輯在頁面中完成并支持報(bào)告 中途保存及數(shù)據(jù)繼承(一份報(bào)告從另外一份報(bào)告中提取信息)等功能交互性體驗(yàn)良好,并 且系統(tǒng)以業(yè)務(wù)查詢方法的描述信息為基礎(chǔ),具備了良好的擴(kuò)展性。
權(quán)利要求
一種基于動(dòng)態(tài)網(wǎng)頁的可擴(kuò)展的Word報(bào)告自動(dòng)生成方法,其特征在于包括以下步驟1)擴(kuò)展數(shù)據(jù)處理方法為每一個(gè)數(shù)據(jù)處理方法添加一條唯一的表明方法功能和用途的描述信息,并通過編譯器或者解釋器生成一個(gè)可以被其他應(yīng)用程序共享的模塊或者文件即數(shù)據(jù)處理方法共享文件;2)創(chuàng)建數(shù)據(jù)處理方法對(duì)應(yīng)的標(biāo)簽利用反射技術(shù)從數(shù)據(jù)處理方法共享文件中解析數(shù)據(jù)處理方法的描述信息,并分類整理封裝為標(biāo)簽,標(biāo)簽由標(biāo)簽頭即標(biāo)簽類型和標(biāo)簽體兩部分組成,標(biāo)簽頭和標(biāo)簽體是一對(duì)多的關(guān)系;3)定制報(bào)告模板利用標(biāo)簽定制一份Word形式的報(bào)告模板;4)用報(bào)告模板生成動(dòng)態(tài)網(wǎng)頁5)生成word報(bào)告根據(jù)動(dòng)態(tài)網(wǎng)頁中收集的數(shù)據(jù)信息替換Word報(bào)告模板中的數(shù)據(jù)占位符,生成Word報(bào)告。
2.如權(quán)利要求1所述的基于動(dòng)態(tài)網(wǎng)頁的可擴(kuò)展的Word報(bào)告自動(dòng)生成方法,其特征在于所述步驟3)進(jìn)一步細(xì)分為以下子步驟[3.1)擴(kuò)展Word菜單并添加選擇標(biāo)簽的窗口 ; 3. 2)定義報(bào)告的章節(jié);[3. 3)選擇標(biāo)簽類型; 3. 4)選擇標(biāo)簽體;[3. 5)把選擇的標(biāo)簽組合以書簽的方式作為數(shù)據(jù)占位符放在相應(yīng)的章節(jié)下; 3. 6)將這份包含數(shù)據(jù)占位符的Word文檔保存為一份Word文件作為報(bào)告模板。
3.如權(quán)利要求1所述的基于動(dòng)態(tài)網(wǎng)頁的可擴(kuò)展的Word報(bào)告自動(dòng)生成方法,其特征在于所述步驟4)進(jìn)一步細(xì)分為以下子步驟[4.1)從Word報(bào)告模板中以遍歷書簽的方式查找數(shù)據(jù)占位符并讀取它的值即數(shù)據(jù)處理 方法的描述信息;[4. 2)通過反射技術(shù)和描述信息、數(shù)據(jù)處理方法的一一對(duì)應(yīng)關(guān)系,找到數(shù)據(jù)處理方法; 4. 3)反射數(shù)據(jù)處理方法的返回值類型并據(jù)此確定數(shù)據(jù)的Aspx展示控件,此Aspx為一 種動(dòng)態(tài)網(wǎng)絡(luò)編程的網(wǎng)絡(luò)語言;[4. 4)把報(bào)告模板保存為Html形式;[4. 5)利用正則表達(dá)式刪除Html文件中的注釋和樣式等信息添加Aspx頁面需要的信息 4. 6)通過模板引擎技術(shù)用Aspx數(shù)據(jù)展示控件替換Html中數(shù)據(jù)占位符,生成動(dòng)態(tài)頁[4. 7)根據(jù)報(bào)告模板中的數(shù)據(jù)占位符,生成動(dòng)態(tài)頁面對(duì)應(yīng)的后臺(tái)處理文件,調(diào)用每一個(gè) 數(shù)據(jù)占位符對(duì)應(yīng)的數(shù)據(jù)處理方法讀取數(shù)據(jù)并與動(dòng)態(tài)頁面中的數(shù)據(jù)展示組件綁定; 4. 8)通過訪問Aspx頁面完成對(duì)報(bào)告的編輯。
4.如權(quán)利要求1所述的基于動(dòng)態(tài)網(wǎng)頁的可擴(kuò)展的Word報(bào)告自動(dòng)生成方法,其特征在于在所述步驟5)中,如果傳過來的數(shù)據(jù)是文本、表格和圖片,就按數(shù)據(jù)的格式替換模板 中的數(shù)據(jù)占位符,如果傳過來的數(shù)據(jù)是字節(jié)數(shù)組,就把數(shù)據(jù)轉(zhuǎn)換為圖片并用圖片替換模版 中的數(shù)據(jù)占位符,如果傳過來的數(shù)據(jù)是文件路徑,就先讀取文件路徑指向的文件的內(nèi)容并 以此替換模板中的數(shù)據(jù)占位符,最終利用數(shù)據(jù)替換模板中所有的數(shù)據(jù)占位符并保存為一份 Word文件作為Word報(bào)告。
全文摘要
本發(fā)明涉及一種基于動(dòng)態(tài)網(wǎng)頁的可擴(kuò)展的Word報(bào)告自動(dòng)生成方法,其包括以下步驟1)為每一個(gè)數(shù)據(jù)處理方法添加一條唯一的表明方法功能和用途的描述信息;2)利用反射技術(shù)從數(shù)據(jù)處理方法共享文件中解析數(shù)據(jù)處理方法的描述信息,并分類整理封裝為標(biāo)簽;3)利用標(biāo)簽定制一份Word形式的報(bào)告模板;4)用模板生成動(dòng)態(tài)網(wǎng)頁;5)根據(jù)頁面?zhèn)鬟^來的數(shù)據(jù)信息替換Word報(bào)告模板中數(shù)據(jù)占位符,生成Word報(bào)告。該方法擺脫了Word對(duì)數(shù)據(jù)訪問界面的限制,可獲得良好的交互性體驗(yàn),同時(shí)不增加模板定制和報(bào)告編寫人員的負(fù)擔(dān),保證系統(tǒng)的高效性和可擴(kuò)展性。
文檔編號(hào)G06F17/30GK101976235SQ201010290078
公開日2011年2月16日 申請(qǐng)日期2010年9月21日 優(yōu)先權(quán)日2010年9月21日
發(fā)明者劉超, 劉鵬, 周永輝, 李占旭, 李強(qiáng), 李明, 李海峰, 王曉晨, 秦巍, 錢勇 申請(qǐng)人:天津神舟通用數(shù)據(jù)技術(shù)有限公司;北京空間飛行器總體設(shè)計(jì)部