專利名稱:黃金報表生成器及生成方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種報表的生成器及其方法,尤其是涉及一種能夠簡易快速制作任意復(fù)雜格式報表的生成器及生成方法。本發(fā)明屬于計算機(jī)應(yīng)用技術(shù)領(lǐng)域。
背景技術(shù):
隨著計算機(jī)的廣泛應(yīng)用,各種領(lǐng)域都大量用軟件來完成日常工作,而報表是企業(yè)應(yīng)用軟件系統(tǒng)中必不可少的一部分。報表的形成需要完成報表樣式的制作、數(shù)據(jù)的加載、打印輸出等主要的工作。完成這些主要的工作通常需要一個專門的通用報表工具,報表工具涉及到包括報表模型的設(shè)計、圖形化界面、數(shù)據(jù)加載接口、打印輸出控制等很多技術(shù)領(lǐng)域。一般情況下軟件開發(fā)公司和企業(yè)用戶基本上都使用商業(yè)的報表工具。現(xiàn)在商業(yè)的報表工具有許多國外的著名產(chǎn)品,近年來也有一些國內(nèi)的產(chǎn)品出現(xiàn)。
目前上述報表工具存在的主要問題是制作過程復(fù)雜不易掌握,操作困難費(fèi)時費(fèi)力,從而效率很低。最明顯的問題是制作過程中的繪制報表樣式,必須人工用鍵盤或鼠標(biāo)精確排列和對齊所有的線、框、字等,這是一項(xiàng)非常繁雜的工作。對于中國式的報表這個問題尤為突出,中國式的報表邊框和線條較多,欄目層次多且繁雜,有上方欄目,還有側(cè)面的欄目等。在一個應(yīng)用軟件系統(tǒng)中有幾十到上百個報表,制作報表的工作量之大可想而知。目前沒有一種工具較好的技術(shù)方法解決這個問題以簡化制作過程提高效率。
發(fā)明內(nèi)容
為解決現(xiàn)有技術(shù)的不足,本發(fā)明提供了一種可讓使用者簡單快速地制作任意復(fù)雜格式報表的設(shè)計和輸出工具及方法——黃金報表生成器及生成方法,并且可以將準(zhǔn)備好的數(shù)據(jù)自動導(dǎo)入報表,形成完整的報表供使用者瀏覽和打印。
為解決上述問題,本發(fā)明是通過以下技術(shù)方案來實(shí)現(xiàn)的一種黃金報表生成器,包括報表設(shè)計器、數(shù)據(jù)單元和加載輸出組件,所述的加載輸出組件包括輸出打印模塊,其特征在于所述的報表設(shè)計器包括(1)、報表編輯模塊,是人機(jī)交互界面,定義了構(gòu)件,用以接受人的各種相關(guān)意圖并給予相應(yīng)反饋表示;(2)、智能分析排列模塊,其用以完成對構(gòu)件的自動排列,根據(jù)當(dāng)前所有相關(guān)構(gòu)件的信息分析出人的意圖,進(jìn)而調(diào)整各構(gòu)件的大小和位置,對構(gòu)件作出精確的排列,可以分別對塊和塊內(nèi)所有元素進(jìn)行分析排列,數(shù)據(jù)塊內(nèi)元素的分析排列是以欄目塊的元素為標(biāo)準(zhǔn)的;(3)、定義文件生成模塊,其根據(jù)編輯的內(nèi)容生成特定的定義性數(shù)據(jù),并保存在指定的文件中;
所述的加載輸出組件還包括定義文件加載模塊,其在調(diào)用報表時,加載報表的定義信息,并將定義信息解釋為構(gòu)件。
前述的黃金報表生成器,其特征在于所述的報表設(shè)計器還包括定義文件加載模塊,其讀取記載報表的設(shè)計信息的指定文件,并將其加載到報表設(shè)計器中,在加載的過程中將定義信息解釋為構(gòu)件,用以對設(shè)計的報表樣式進(jìn)行調(diào)用、修改。
前述的黃金報表生成器,其特征在于所述的構(gòu)件包括紙張、表框、塊、元素,所述的塊包括表頭塊、表腳塊、頁頭塊、頁腳塊、欄目塊、數(shù)據(jù)塊、圖形塊;所述的元素包括文本元素和圖形元素。
前述的黃金報表生成器,其特征在于所述的數(shù)據(jù)單元是計算機(jī)的硬盤或其它可存儲介質(zhì)。
前述的黃金報表生成器,其特征在于所述的加載輸出組件還包括數(shù)據(jù)加載模塊和解釋模塊,數(shù)據(jù)加載模塊加載由調(diào)用程序準(zhǔn)備的數(shù)據(jù),解釋模塊對加載的定義信息和數(shù)據(jù)信息進(jìn)行解釋,按照數(shù)據(jù)傳遞規(guī)則和方法形成含有數(shù)據(jù)的報表,這個實(shí)際的報表可供瀏覽和打印。
一種利用前述的黃金報表生成器的黃金報表生成方法,其包括以下步驟(1)、報表編輯步驟接受人的各種相關(guān)意圖并以構(gòu)件的形式給予相應(yīng)反饋顯示,以實(shí)現(xiàn)人機(jī)交互;(2)、智能分析排列步驟根據(jù)相關(guān)構(gòu)件的分布信息分析出人的意圖,進(jìn)而調(diào)整各構(gòu)件的大小和位置,自動對構(gòu)件作出精確的排列;(3)、定義文件生成步驟根據(jù)編輯的內(nèi)容將其生成特定的定義性數(shù)據(jù),并保存在指定的文件中;(4)、報表定義文件加載步驟讀取記載報表的設(shè)計信息的指定文件,并將其加載到加載輸出組件中,在加載的過程中將定義信息解釋為構(gòu)件;(5)、調(diào)用瀏覽步驟報表設(shè)計完成后由應(yīng)用程序調(diào)用,加載報表的定義信息,按照數(shù)據(jù)傳遞規(guī)則和方法加載由應(yīng)用程序準(zhǔn)備的數(shù)據(jù),最后對定義信息和數(shù)據(jù)信息進(jìn)行解釋,裝填畫出含有數(shù)據(jù)的報表。
前述的黃金報表生成方法,其特征在于所述的智能分析排列步驟中,在對構(gòu)件進(jìn)行自動排列時,分別對塊和塊內(nèi)所有元素進(jìn)行分析排列,對元素高度的調(diào)整是以當(dāng)前選中的某一元素為基本標(biāo)準(zhǔn)對其它所有相關(guān)元素進(jìn)行調(diào)整,數(shù)據(jù)塊內(nèi)元素的分析排列是以欄目塊的元素為標(biāo)準(zhǔn)的。
前述的黃金報表生成方法,其特征在于其還包括在所述的定義文件生成步驟之后,根據(jù)需要調(diào)用編輯過的報表加載到報表設(shè)計器中進(jìn)行修改,并再次生成特定的定義性數(shù)據(jù),保存在指定的文件中以供再次加載修改或由加載輸出組件進(jìn)行調(diào)用的步驟。
前述的黃金報表生成方法,其特征在于所述的數(shù)據(jù)傳遞規(guī)則和方法是向加載輸出組件傳遞的是一組二維數(shù)據(jù)表(軟件技術(shù)中二維數(shù)據(jù)表有相關(guān)的定義),數(shù)據(jù)表與塊對應(yīng),數(shù)據(jù)表中的列即字段與塊中的元素對應(yīng),即對應(yīng)于元素的字段名;可以不向某一塊傳遞數(shù)據(jù)表,這時該塊的所有元素都沒有動態(tài)內(nèi)容顯示;可以不向某一元素傳遞數(shù)據(jù),這時該元素沒有動態(tài)內(nèi)容顯示;如果數(shù)據(jù)表的某個字段沒有任何元素的字段名與其相同,那么數(shù)據(jù)表中這個字段的數(shù)據(jù)將沒有被使用;元素的字段名可設(shè)為空,這時元素顯示的是元素名稱屬性的內(nèi)容,此時這個元素顯示的內(nèi)容不是動態(tài)的,是在設(shè)計的時候固定的內(nèi)容;同時傳遞給塊的數(shù)據(jù)表根據(jù)需要可以是多行數(shù)據(jù)也可以是單行數(shù)據(jù)。數(shù)據(jù)表的數(shù)據(jù)來源不受限制,如何組織二維數(shù)據(jù)表對于報表來說是無關(guān)的,數(shù)據(jù)是存儲在數(shù)據(jù)庫里還是文件里還是手工錄入的,這些都與報表的制作無關(guān)。
前述的黃金報表生成方法,其特征在于其還包括輸出打印步驟,由應(yīng)用程序調(diào)用并生成的含有數(shù)據(jù)的報表在需要時被打印。
本發(fā)明的有益效果是本發(fā)明以一種全新的概念和方式制作報表,使得制作報表簡易而快速。采用以簡單的構(gòu)件的形式表達(dá)一個報表信息的方式,建立紙張、表框、塊、元素之間的層次關(guān)系,用紙張、表框、表頭塊、表腳塊、頁頭塊、頁腳塊、欄目塊、數(shù)據(jù)塊、圖形塊、文本元素和圖形元素這些構(gòu)件之間有層次的位置組合和屬性來設(shè)計報表,使得報表的編輯清晰簡單,使用者容易掌握;使用者繪制報表樣式時以自動方式來實(shí)現(xiàn)所有元素的排列和精確對齊,大幅度降低了操作難度,速度提高了幾十倍;報表的制作過程不依賴于數(shù)據(jù)源也降低了使用復(fù)雜程度,簡化制作過程。同時不要求使用者俱備數(shù)據(jù)庫知識或理解數(shù)據(jù)結(jié)構(gòu)和存儲設(shè)計者的意思,降低了人力級別要求。不依賴于數(shù)據(jù)源也使得進(jìn)行報表制作工作的時間不受限制,不必等到數(shù)據(jù)結(jié)構(gòu)和存儲確定之后再進(jìn)行。數(shù)據(jù)庫的修改也不會對報表產(chǎn)生影響。也即報表的制作和數(shù)據(jù)的準(zhǔn)備可以分開獨(dú)立進(jìn)行。
圖1是本發(fā)明的黃金報表生成器的組成示意圖;圖2A是本發(fā)明的紙張、表框、塊、元素之間的層次關(guān)系示意圖;圖2B是本發(fā)明的紙張、表框、塊、元素布局舉例示意圖;圖3A是本發(fā)明制作報表時人工排列的塊和元素大概相對位置關(guān)系示意圖;圖3B是本發(fā)明制作報表時智能分析自動排列對齊塊和元素后結(jié)果示意圖;圖4是本發(fā)明實(shí)施例的主界面示意圖。
具體實(shí)施例方式
下面結(jié)合附圖,對本發(fā)明作具體介紹如下圖1是本發(fā)明的黃金報表生成器的組成示意圖,如圖所示,黃金報表生成器包括報表設(shè)計器A、數(shù)據(jù)單元B、加載輸出組件C。其中報表設(shè)計器A包含有
報表編輯模塊A1是人機(jī)交互界面,用以接受人的各種相關(guān)意圖并給予相應(yīng)反饋表示。在編輯模塊中定義了如下構(gòu)件(1)、紙張紙張是最基本的部分,同實(shí)際的紙張概念相同,有大小和橫放豎放屬性可以設(shè)置,在紙張上建立有坐標(biāo)系和標(biāo)尺,紙張在建立新報表時自動產(chǎn)生。
(2)、表框放置在紙張內(nèi),是一個區(qū)域,是在紙張中的范圍,一切內(nèi)容都在這個范圍內(nèi),有邊距屬性和邊框可見屬性,使用者可以設(shè)置,表框在建立新報表時自動產(chǎn)生。
(3)、表頭塊塊分多種類型,表頭塊是其中一種,在一個表中僅有一個,放置在表框內(nèi),為所有報表打印紙張的開始,在放置時自動??吭诒砜虻捻敹?,可改變高度,有相應(yīng)的屬性。
(4)、表腳塊放置在表框內(nèi),僅有一個,為所有報表打印紙張的結(jié)束。在放置時自動停靠在表框的底端,可改變高度,有相應(yīng)的屬性。
(5)、頁頭塊放置在表框內(nèi),為每頁打印紙張的開始,在放置時自動停靠在表頭的下方,可改變高度,有相應(yīng)的屬性。
(6)、頁腳塊放置在表框內(nèi),為每頁打印紙張的結(jié)束,在放置時自動??吭诒砟_的上方,可改變高度,有相應(yīng)的屬性。
(7)、欄目塊放置在表框內(nèi),是表格的欄目區(qū)域,在放置時自動??吭陧擃^的下端,但也可任意拖動???,可改變高度和寬度,有相應(yīng)的屬性。在一個表中可以有多個欄目塊可以橫放也可豎放。
(8)、數(shù)據(jù)塊放置在表框內(nèi),是表格的數(shù)據(jù)區(qū)域,在放置時自動??吭跈谀繅K的下方或側(cè)方并精確對齊,但也可任意拖動停靠,可改變高度和寬度,有相應(yīng)的屬性,數(shù)據(jù)塊應(yīng)有對應(yīng)的至少一個欄目塊。
(9)、圖形塊放置在表框內(nèi),是表格的數(shù)據(jù)區(qū)域,在放置時自任意拖動???,可改變高度和寬度,有相應(yīng)的屬性,可以放置任意個圖形塊在表框內(nèi)。
(10)、文本元素元素是最小單元,元素分文本元素和圖形元素,放置在各類塊中,在放置時就地停靠,可任意拖動,可改變高度和寬度,有相應(yīng)的屬性,文本元素可表現(xiàn)數(shù)字也可表現(xiàn)文字,可以放置任意個。
(11)、圖形元素圖形元素是元素的一種類型,放置在圖形塊中,以圖形的方式表現(xiàn)數(shù)據(jù)值,在放置時就地???,可任意拖動,可改變高度和寬度,有相應(yīng)的屬性。
圖2A是紙張、表框、塊、元素之間的層次關(guān)系示意圖,紙張?zhí)幵谧畹讓?。圖2B是在設(shè)計器中編輯報表時的一種紙張、表框、塊、元素之間的布局情況示意圖。
按照本發(fā)明設(shè)計編輯的報表是以構(gòu)件組成的,這些獨(dú)立的構(gòu)件以其排列和屬性表達(dá)了一個報表的全部信息。
智能分析排列模塊A2本發(fā)明設(shè)計了一個智能分析排列模塊,用以完成對構(gòu)件的自動排列,該模塊能根據(jù)當(dāng)前所有相關(guān)構(gòu)件的情況分析出人的意圖,進(jìn)而調(diào)整構(gòu)件的大小和位置,對構(gòu)件作出精確的排列,可以分別對塊和塊內(nèi)所有元素進(jìn)行分析排列,數(shù)據(jù)塊內(nèi)元素的分析排列是以欄目塊的元素為標(biāo)準(zhǔn)的。參見圖3A和圖3B。圖3A是本發(fā)明制作報表時人工排列的元素大概的相對位置關(guān)系示意圖;圖3B是本發(fā)明制作報表時經(jīng)智能分析自動排列對齊元素后的結(jié)果示意圖。
定義文件生成模塊A3根據(jù)編輯的內(nèi)容生成特定的定義性數(shù)據(jù),并保存在指定的文件中。
定義文件加載模塊A4讀取記載報表的設(shè)計信息的指定文件,并將其加載到設(shè)計器中,在加載的過程中要將定義信息解釋為構(gòu)件,用以對設(shè)計的報表樣式進(jìn)行調(diào)用、修改。
數(shù)據(jù)單元B根據(jù)編輯的內(nèi)容生成特定的定義性數(shù)據(jù),可以以文件的形式保存報表的定義信息。數(shù)據(jù)單元B可以是計算機(jī)的硬盤或者其它可存儲介質(zhì),比如U盤、移動硬盤、磁盤等。
加載輸出組件C包括定義文件加載模塊A4、數(shù)據(jù)加載模塊C2、解釋模塊C3、輸出打印模塊C4。本組件用以在報表設(shè)計制作完成后,在應(yīng)用程序的使用者需要瀏覽、打印時被調(diào)用。報表被調(diào)用時,報表定義文件加載模塊A4首先加載報表的定義信息,而后數(shù)據(jù)加載模塊C2加載由調(diào)用程序準(zhǔn)備的數(shù)據(jù),再由解釋模塊C3對加載的定義信息和數(shù)據(jù)信息進(jìn)行解釋,按照數(shù)據(jù)傳遞規(guī)則和方法形成含有數(shù)據(jù)的報表,這個實(shí)際的報表可瀏覽和打印。
采用此黃金報表生成器制作報表的方法,其包括以下步驟(1)、報表編輯步驟接受人的各種相關(guān)意圖并以構(gòu)件的形式給予相應(yīng)反饋顯示,以實(shí)現(xiàn)人機(jī)交互;(2)、智能分析排列步驟根據(jù)當(dāng)前構(gòu)件的情況分析出人的意圖,進(jìn)而調(diào)整各構(gòu)件的大小和位置,自動對構(gòu)件作出精確的排列;(3)、定義文件生成步驟根據(jù)編輯的內(nèi)容生成特定的定義性數(shù)據(jù),并保存在指定的文件中;(4)、報表定義文件加載步驟讀取記載報表的設(shè)計信息的指定文件,并將其加載到加載輸出組件中,在加載的過程中將定義信息解釋為構(gòu)件;(5)、調(diào)用瀏覽步驟報表設(shè)計完成后由應(yīng)用程序調(diào)用,加載報表的定義信息,再加載由應(yīng)用程序準(zhǔn)備的數(shù)據(jù),最后對加載的定義信息和數(shù)據(jù)信息進(jìn)行解釋,按照數(shù)據(jù)傳遞規(guī)則和方法形成含有數(shù)據(jù)的報表,這個含有實(shí)際數(shù)據(jù)的報表可供瀏覽和打印。
在智能分析排列步驟中,在對構(gòu)件進(jìn)行自動排列時,分別對塊和塊內(nèi)所有元素進(jìn)行分析排列,對元素高度的調(diào)整是以當(dāng)前選中的某一元素為基本標(biāo)準(zhǔn)對其它所有相關(guān)元素進(jìn)行調(diào)整,數(shù)據(jù)塊內(nèi)元素的分析排列是以欄目塊的元素為標(biāo)準(zhǔn)的。
在定義文件生成步驟之后,根據(jù)需要可調(diào)用編輯過的報表加載到報表設(shè)計器中進(jìn)行修改,并再次生成特定的定義性數(shù)據(jù),保存在指定的文件中以供再次加載修改或由加載輸出組件進(jìn)行調(diào)用。
本發(fā)明設(shè)計的數(shù)據(jù)傳遞規(guī)則和方法是向報表加載輸出組件傳遞的是一組二維數(shù)據(jù)表(軟件技術(shù)中二維數(shù)據(jù)表有相關(guān)的定義)。數(shù)據(jù)表與塊對應(yīng),數(shù)據(jù)表中的列即字段與塊中的元素對應(yīng),即對應(yīng)于元素的字段名。在傳遞過程中可以不向某一塊傳遞數(shù)據(jù)表,這時該塊的所有元素都沒有動態(tài)內(nèi)容顯示,可以不向某一元素傳遞數(shù)據(jù),這時該元素沒有動態(tài)內(nèi)容顯示。如果數(shù)據(jù)表的某個字段沒有任何元素的字段名與其相同,那么數(shù)據(jù)表中這個字段的數(shù)據(jù)將沒有被使用。元素的字段名可設(shè)為空,這時元素顯示的是元素名稱屬性的內(nèi)容,此時這個元素顯示的內(nèi)容不是動態(tài)的,是在設(shè)計的時候固定的內(nèi)容。傳遞給塊的數(shù)據(jù)表根據(jù)需要可以是多行數(shù)據(jù)也可以是單行數(shù)據(jù)。數(shù)據(jù)表的數(shù)據(jù)來源不受限制,如何組織二維數(shù)據(jù)表對于報表來說是無關(guān)的,數(shù)據(jù)是存儲在數(shù)據(jù)庫里還是文件里還是手工錄入的,這些都與報表的制作無關(guān)。
報表制作完成后,可以由應(yīng)用程序調(diào)用并生成的含有數(shù)據(jù)的報表在需要時被打印。
本發(fā)明制定的該規(guī)則和方法對簡化整個報表制作和調(diào)用的過程也起到了重要的作用。它使得報表要顯示的數(shù)據(jù)的準(zhǔn)備與報表的樣式制作能夠分開,實(shí)現(xiàn)了調(diào)用者和制作者的簡單交界關(guān)系,是一種低的耦合關(guān)系。數(shù)據(jù)的來源和產(chǎn)生完全是報表的調(diào)用者即程序員的工作,是程序員根據(jù)應(yīng)用系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)和存儲方式以及數(shù)據(jù)處理邏輯來解決的問題,當(dāng)數(shù)據(jù)結(jié)構(gòu)和存儲方式需要改變時無需擔(dān)心對報表本身的影響。而報表要顯示的內(nèi)容包括樣式,是應(yīng)用系統(tǒng)的使用者即用戶提出來的,是一種業(yè)務(wù)需求,報表的制作者只負(fù)責(zé)滿足用戶的這種需求,而不必關(guān)心數(shù)據(jù)結(jié)構(gòu)和存儲方式以及數(shù)據(jù)處理邏輯。由于這種低耦合的關(guān)系報表的制作者和報表的數(shù)據(jù)準(zhǔn)備者在技術(shù)上可以分開層次,對報表的制作者的技術(shù)要求相對要低的多。
實(shí)施例如圖4所示,主界面左側(cè)上方區(qū)域?yàn)轫?xiàng)目管理區(qū),左側(cè)下方區(qū)域?yàn)榇蜷_的多個報表的列表區(qū),右側(cè)區(qū)域是設(shè)計區(qū)。項(xiàng)目管理區(qū)管理當(dāng)前項(xiàng)目的所有報表,列表區(qū)列出所有打開的報表,如果創(chuàng)建報表或打開報表,列表區(qū)將增加一項(xiàng)新的表。設(shè)計區(qū)顯示列表區(qū)中當(dāng)前所選擇報表的編輯界面,點(diǎn)擊左上角的箭頭,可以放大和還原設(shè)計區(qū)。
報表具體設(shè)計過程如下點(diǎn)擊創(chuàng)建報表按鈕設(shè)計區(qū)會立即出現(xiàn)一張新的報表,紙張和表框自動產(chǎn)生。
雙擊紙張區(qū)域,彈出紙張屬性設(shè)置窗口,可選紙張的方向和大小屬性。
雙擊表框區(qū)域,彈出表框?qū)傩栽O(shè)置窗口,可設(shè)置表框在紙張中的位置等屬性。
在構(gòu)件箱里點(diǎn)擊表頭塊使其處于選擇狀態(tài),在表框內(nèi)單擊,則在表框中放入了一個表頭塊,雙擊表框內(nèi)的表頭塊,彈出表頭塊屬性設(shè)置窗口可進(jìn)行表頭塊屬性設(shè)置。在構(gòu)件箱里點(diǎn)擊文本元素,使其處于選擇狀態(tài),在表頭塊內(nèi)單擊,則在表頭塊中放入了一個文本元素,雙擊這個文本元素,彈出屬性設(shè)置窗口,可進(jìn)行屬性設(shè)置。
以相同的方式拖放表腳塊、頁頭塊、頁腳塊。
在構(gòu)件箱里點(diǎn)擊欄目塊構(gòu)件使其處于選擇狀態(tài),在表框內(nèi)單擊,則在表框中放入了一個欄目塊,雙擊表框內(nèi)的欄目塊,彈出欄目塊屬性設(shè)置窗口,進(jìn)行欄目塊屬性設(shè)置。在構(gòu)件箱里點(diǎn)擊文本元素構(gòu)件使其處于選擇狀態(tài),按住Ctrl鍵,連續(xù)單擊欄目塊將多個文本元素拖放在在欄目塊中,設(shè)置名稱,調(diào)整文本元素的大小和相對位置,如圖3A,點(diǎn)擊排列元素按鈕,欄目塊中的文本元素將自動調(diào)整高度精確排列好如圖3B,調(diào)整高度是當(dāng)前選中的元素為標(biāo)準(zhǔn)。點(diǎn)擊排列塊按鈕,欄目塊將自動調(diào)整高度。點(diǎn)擊??繅K按鈕,欄目塊將自動??吭陧擃^塊的下方。
如同欄目塊一樣方法編輯制作數(shù)據(jù)塊。數(shù)據(jù)塊元素排列會自動按照上方的欄目塊調(diào)整大小和精確排列位置。在每個文本元素屬性設(shè)置窗口中設(shè)置字段名。
點(diǎn)擊保存報表,輸入一個名稱,名稱可以是漢字,保存后會生成一個以jpt為擴(kuò)展名的文件,報表文件就做好了。
應(yīng)用程序中調(diào)用時的數(shù)據(jù)準(zhǔn)備如下string strSQL=″select order xh,mc mc_cp,nh bh_cp,bqxse xse_bq,bqlre lre_bq,tqxse xse_tq,tqlre lre_tq from DBTable1″;string cnStr=″Server=192.168.1.8;uid=sa;pwd=sa;DataBase=DBName″;SqlConnection cn=new SqlConnection(cnStr);cn.Open();SqlCommand cmd=new SqlCommand(sql,cn);SqlDataAdapter adpt=new SqlDataAdapter(cmd);DataTable dt=new DataTable(″aaa″);adpt.Fill(dt);string strTitle=″2007年02月銷售統(tǒng)計報表″;在winform程序中調(diào)用,加載輸出組件提供jpReportPreview控件,編寫如下代碼加載數(shù)據(jù)、顯示和打印輸出報表
jpReportPreview ojpReport=new jpReportPreview();ojpReport.AddDataTable(dt);ojpReport.AddDataTable(″title″,strTitle,″TitleTable″);//表頭的表名ojpReport.FileName=Application.StartupPath+″\\report\\銷售統(tǒng)計報表.jpt″;ojpReportPreview.ShowPrintPreviewDialog(true);在webform程序中調(diào)用加載輸出組件提供WebJpReport控件,編寫如下代碼加載數(shù)據(jù)、顯示和打印輸出報表protected WebJpReport.WebReport oWebReport;oWebReport.FileName=″銷售統(tǒng)計報表.jpt″;oWebReport.AddDataTable(″title″,strTitle,″TitleTable″);//表頭的表名oWebReport.AddDataTable(dt)oWebReport.PreviewReport();本發(fā)明提供的黃金報表生成方法使得使用該方法的用戶能夠大幅度提高效率降低成本。該方法簡單易學(xué),降低了對使用者的專業(yè)要求,一般會打字的人通過極短時間的學(xué)習(xí)就能掌握使用。該方法制作報表速度快,就是一個剛學(xué)會的人也能在幾分鐘內(nèi)制作一張合格的較復(fù)雜的報表。效率高、人員要求低,可為軟件開發(fā)企業(yè)大大節(jié)省報表制作成本,經(jīng)實(shí)際使用可節(jié)省成本90%以上。
以上已以較典型實(shí)施例公布了本發(fā)明,然其并非用以限制本發(fā)明,凡采用等同替換或等效變換的方法所獲得技術(shù)方案,均落在本發(fā)明的保護(hù)范圍內(nèi)。
權(quán)利要求
1.黃金報表生成器,包括報表設(shè)計器、數(shù)據(jù)單元和加載輸出組件,所述的加載輸出組件包括輸出打印模塊,其特征在于所述的報表設(shè)計器包括(1)、報表編輯模塊,是人機(jī)交互界面,定義了構(gòu)件,用以接受人的各種相關(guān)意圖并給予相應(yīng)反饋表示;(2)、智能分析排列模塊,其用以完成對構(gòu)件的自動排列,根據(jù)當(dāng)前所有相關(guān)構(gòu)件的信息分析出人的意圖,進(jìn)而調(diào)整各構(gòu)件的大小和位置,對構(gòu)件作出精確的排列,可以分別對塊和塊內(nèi)所有元素進(jìn)行分析排列,數(shù)據(jù)塊內(nèi)元素的分析排列是以欄目塊的元素為標(biāo)準(zhǔn)的;(3)、定義文件生成模塊,其根據(jù)編輯的內(nèi)容生成特定的定義性數(shù)據(jù),并保存在指定的文件中;所述的加載輸出組件還包括定義文件加載模塊,其在調(diào)用報表時,加載報表的定義信息,并將定義信息解釋為構(gòu)件。
2.根據(jù)權(quán)利要求1所述的黃金報表生成器,其特征在于所述的報表設(shè)計器還包括定義文件加載模塊,其讀取記載報表的設(shè)計信息的指定文件,并將其加載到報表設(shè)計器中,在加載的過程中將定義信息解釋為構(gòu)件,用以對設(shè)計的報表樣式進(jìn)行調(diào)用、修改。
3.根據(jù)權(quán)利要求1或2所述的黃金報表生成器,其特征在于所述的構(gòu)件包括紙張、表框、塊、元素,所述的塊包括表頭塊、表腳塊、頁頭塊、頁腳塊、欄目塊、數(shù)據(jù)塊、圖形塊;所述的元素包括文本元素和圖形元素。
4.根據(jù)權(quán)利要求1所述的黃金報表生成器,其特征在于所述的數(shù)據(jù)單元是計算機(jī)的硬盤或其他可存儲介質(zhì)。
5.根據(jù)權(quán)利要求1所述的黃金報表生成器,其特征在于所述的加載輸出組件還包括數(shù)據(jù)加載模塊和解釋模塊,數(shù)據(jù)加載模塊加載由調(diào)用程序準(zhǔn)備的數(shù)據(jù),解釋模塊對加載的定義信息和數(shù)據(jù)信息進(jìn)行解釋,按照數(shù)據(jù)傳遞規(guī)則和方法形成含有數(shù)據(jù)的報表,這個實(shí)際的報表可供瀏覽和打印。
6.一種利用前述的黃金報表生成器的黃金報表生成方法,其包括以下步驟(1)、報表編輯步驟接受人的各種相關(guān)意圖并以構(gòu)件的形式給予相應(yīng)反饋顯示,以實(shí)現(xiàn)人機(jī)交互;(2)、智能分析排列步驟根據(jù)相關(guān)構(gòu)件的分布情況分析出人的意圖,進(jìn)而調(diào)整各構(gòu)件的大小和位置,自動對構(gòu)件作出精確的排列;(3)、定義文件生成步驟根據(jù)編輯的內(nèi)容將其生成特定的定義性數(shù)據(jù),并保存在指定的文件中;(4)、報表定義文件加載步驟讀取記載報表的設(shè)計信息的指定文件,并將其加載到加載輸出組件中,在加載的過程中將定義信息解釋為構(gòu)件;(5)、調(diào)用瀏覽步驟報表設(shè)計完成后由應(yīng)用程序調(diào)用,加載報表的定義信息,按照數(shù)據(jù)傳遞規(guī)則和方法加載由應(yīng)用程序準(zhǔn)備的數(shù)據(jù),最后對定義信息和數(shù)據(jù)信息進(jìn)行解釋,裝填畫出含有數(shù)據(jù)的報表。
7.根據(jù)權(quán)利要求6所述的黃金報表生成方法,其特征在于所述的智能分析排列步驟中,在對構(gòu)件進(jìn)行自動排列時,分別對塊和塊內(nèi)所有元素進(jìn)行分析排列,對元素高度的調(diào)整是以當(dāng)前選中的某一元素為基本標(biāo)準(zhǔn)對其它所有相關(guān)元素進(jìn)行調(diào)整,數(shù)據(jù)塊內(nèi)元素的分析排列是以欄目塊的元素為標(biāo)準(zhǔn)的。
8.根據(jù)權(quán)利要求6所述的黃金報表生成方法,其特征在于其還包括在所述的定義文件生成步驟之后,根據(jù)需要調(diào)用編輯過的報表,將其加載到報表設(shè)計器中進(jìn)行修改,并再次生成特定的定義性數(shù)據(jù),保存在指定的文件中以供再次加載修改或由加載輸出組件進(jìn)行調(diào)用的步驟。
9.根據(jù)權(quán)利要求6所述的黃金報表生成方法,其特征在于所述的數(shù)據(jù)傳遞規(guī)則和方法是向加載輸出組件傳遞的是一組二維數(shù)據(jù)表,數(shù)據(jù)表與塊對應(yīng),數(shù)據(jù)表中的字段與塊中的元素的字段名對應(yīng);可以不向某一塊傳遞數(shù)據(jù)表,這時該塊的所有元素都沒有動態(tài)內(nèi)容顯示;可以不向某一元素傳遞數(shù)據(jù),這時該元素沒有動態(tài)內(nèi)容顯示;如果數(shù)據(jù)表的某個字段沒有任何元素的字段名與其相同,那么數(shù)據(jù)表中這個字段的數(shù)據(jù)將沒有被使用;元素的字段名可設(shè)為空,這時元素顯示的是元素名稱屬性的內(nèi)容,此時這個元素顯示的內(nèi)容不是動態(tài)的,是在設(shè)計的時候固定的內(nèi)容;同時傳遞給塊的數(shù)據(jù)表根據(jù)需要可以是多行數(shù)據(jù)也可以是單行數(shù)據(jù)。
10.根據(jù)權(quán)利要求6所述的黃金報表生成方法,其特征在于其還包括輸出打印步驟,由應(yīng)用程序調(diào)用并生成的含有數(shù)據(jù)的報表在需要時被打印。
全文摘要
本發(fā)明涉及一種黃金報表生成器及生成方法,黃金報表生成器包括報表設(shè)計器、數(shù)據(jù)單元和加載輸出組件,所述的報表設(shè)計器包括報表編輯模塊、智能分析排列模塊、定義文件加載模塊、定義文件生成模塊;所述的加載輸出組件包括定義文件加載模塊、數(shù)據(jù)加載模塊、解釋模塊、輸出打印模塊。本發(fā)明以一種全新的概念和方式制作報表,簡易而快速。使用本發(fā)明繪制報表樣式時,定義信息被解釋為構(gòu)件,用各構(gòu)件之間有層次的位置組合和屬性來設(shè)計報表,以自動方式來實(shí)現(xiàn)所有元素的排列和精確對齊,大幅度降低操作難度;不要求使用者具備數(shù)據(jù)庫知識,降低了人力級別要求;不依賴于數(shù)據(jù)源也使得報表的制作工作提前進(jìn)行,同時數(shù)據(jù)庫的修改也不會對報表產(chǎn)生影響。
文檔編號G06F17/30GK101038583SQ20071002128
公開日2007年9月19日 申請日期2007年4月26日 優(yōu)先權(quán)日2007年4月26日
發(fā)明者孟為 申請人:孟為