在Excel模板文件中加標記的報表輸出方法
【專利摘要】本發(fā)明在Excel模板文件中加標記的報表輸出方法,該方法視Excel軟件作報表設(shè)計器,通過在Excel模板文件中的特定標記來輸出數(shù)據(jù),本發(fā)明可以將List數(shù)組數(shù)據(jù)循環(huán)填入表格,可以將實體類數(shù)據(jù)、字典類數(shù)據(jù)的各個成員填入既定的單元格,可以將簡單類型的參數(shù)填入既定單元格。本發(fā)明省去了報表設(shè)計器的研發(fā)工作,利用現(xiàn)有的Excel軟件作為報表設(shè)計器,提升了用戶設(shè)計報表的用戶體驗,以Excel文件作報表輸出的模板文件,克服了其他類型報表模板對Excel表述不全的不足,不存在諸如頁邊距設(shè)定不一致的情況,只要設(shè)計好了模塊,輸出后即可打印,且與模板最初的設(shè)計毫無差異。
【專利說明】
在Excel模板文件中加標記的報表輸出方法
技術(shù)領(lǐng)域
[0001]本發(fā)明屬于軟件研發(fā)領(lǐng)域,主要用于生成Excel報表。
【背景技術(shù)】
[0002]當前的報表軟件種類繁多,這些軟件大多由二個部分組成:一是報表設(shè)計器,二是報表輸出模塊。其中,報表設(shè)計器大多是一個獨立可運行的程序,報表輸出模塊是一個可被應用軟件調(diào)用的組建或服務。這些報表軟件,其報表設(shè)計器的功能有:1指定單元格的格式,如:單元格的合并、字體、顏色、邊框等,也就是Excel具有的功能;2指定單元格關(guān)聯(lián)的數(shù)據(jù),3 —些其他特殊的設(shè)置,如縱向合并等值單元格等。
[0003]由于:1報表設(shè)計軟件的設(shè)計器因為要實現(xiàn)excel中的許多功能,而研發(fā)工作量巨大;2作為報表軟件,在設(shè)計器上超越或者追趕Excel是不必要也是不現(xiàn)實的,這就必然導致設(shè)計器不可能十分好用;3由于報表軟件和Excel軟件是二個不同的實現(xiàn)體,在報表設(shè)計器中設(shè)計報表其打印效果與導出的Excel表格再打印的效果存在很多差別,如頁邊距對于不上,用戶的設(shè)置有難以反應的模板文件上;4EXCel軟件已經(jīng)深入用戶的日常工作和生活,并多形成習慣,用戶更愿意操作Excel軟件而不愿意操作報表設(shè)計軟件;5比較報表輸出模板和報表設(shè)計器模塊,報表輸出模塊才是報表軟件的核心。
[0004]另外,由于報表軟件涉及對數(shù)據(jù)庫操作和數(shù)據(jù)庫的結(jié)構(gòu),其操作過程比較復雜,90%以上的最終用戶是不用報表軟件進行報表設(shè)計的,使用報表軟件的大多是軟件的研發(fā)人員,但是,對軟件研發(fā)人員來說,更能體現(xiàn)其客戶價值的是軟件輸出模塊,而非設(shè)計器,因而,用Excel替代表設(shè)計器,把報表工作重心轉(zhuǎn)移到報表輸出模塊上,才是最合理的安排。
[0005]由此可見,如果設(shè)計出一種在Excel模板文件中加標記的報表輸出方法,既可省去研發(fā)報表設(shè)計器的工作,又便于用戶使用。
【發(fā)明內(nèi)容】
[0006]本發(fā)明公開一種在Excel模板文件中加標記的報表輸出方法,該方法將Excel軟件視作報表設(shè)計器,通過在Excel表格上增設(shè)標記的方法制作報表模塊,該方法的報表導出過程為:先讀取模板,再填充數(shù)據(jù)。本發(fā)明可將數(shù)組循環(huán)填入既定區(qū)域,可將業(yè)務實體填入既定區(qū)域,可將字典類數(shù)據(jù)填入既定區(qū)域,可將單一變量類數(shù)據(jù)填入既定區(qū)域,填入既定區(qū)域。
[0007]上述業(yè)務實體,是指用于描述一個具體事物的,實體上有用于描述該事物特征的屬性值,如:描述一個用戶的實體,該實體上有用戶名、用戶代碼、用戶所述的組織機構(gòu)、用戶設(shè)置的登錄密碼等信息。
[0008]為實現(xiàn)上述目標,本發(fā)明提供有一個報表輸出模塊,該輸出模塊的核心函數(shù)實現(xiàn)報表的輸出,該函數(shù)的第一個參數(shù)是Excel模板文件名稱,緊跟其后的是一組不定長度的參數(shù),在此,本發(fā)明將后面的這些參數(shù)依次命名為:ArgO, Argl, Arg2, Arg3,…,。
[0009]報表輸出模塊的核心函數(shù)形式如下:ExcelHelper.Export (tempFile, ArgO, Argl,...);
為實現(xiàn)本發(fā)明的既定目標,如圖1所示,本發(fā)明對Excel模板的設(shè)計做出如下約定:
1.Excel模板文件由二個頁面組成,一是帶特定標記的表格頁(以下簡稱“模板頁”),二是“模板設(shè)置”頁(以下簡稱“設(shè)置頁”)。
[0010]2.本發(fā)明將按照模板頁進行報表的輸出,單元格合并、字體、字號、頁眉、頁腳、頁邊距均來自本模板頁中的表格設(shè)計。
[0011]3.傳入?yún)?shù)該輸出到表格中的哪個位置,是由模板頁中的特定標記來標識的。
[0012]4.頁面上的特定標記是以“{}”括起來的文本,置入表格中各個單元格的的文本上,如:{Arg4.UserName }。
[0013]5.如圖1中“{Arg2}”,當傳入?yún)?shù)為簡單數(shù)據(jù)類型(如int, double, float,string, datetime等)時,模板頁上的特定標記類似于:{Arg2},{Arg3},{Arg5}等,也就是參數(shù)的名稱,本發(fā)明在報表輸出的過程中,會將相應的值填入該單元格,單元格的格式(如字體、字號、文字顏色、加粗、邊框、單元格背景色等)是在報表設(shè)計的過程中預置的,本發(fā)明不對此作任何工作。
[0014]6.當傳入?yún)?shù)為業(yè)務實體或Dict1nary字典數(shù)據(jù)時,模板頁上的特定標記類似于:{Arg4.UserName }, {Arg4.UserCode }, {Arg4.Department},特定標記中的內(nèi)容分二部分,并以”號隔開,第一部分為參數(shù)名稱,第二部分為參數(shù)成員的名稱,本發(fā)明在報表輸出的過程中,會將相應的值填入該單元格,單元格的格式(如字體、字號、文字顏色、加粗、邊框、單元格背景色等)是在報表設(shè)計的過程中預置的,本發(fā)明不對此作任何工作。
[0015]7.當傳入?yún)?shù)為業(yè)務實體的數(shù)組時(如ListOJser〉),模板頁上的特定標記類似于:{Arg4.UserName }, {Arg4.UserCode }, {Arg4.Department},特定標記中的內(nèi)容分二部分,并以”號隔開,第一部分為參數(shù)名稱,第二部分為參數(shù)成員的名稱,本發(fā)明在報表輸出的過程中,有如下幾個步驟:
①從設(shè)置頁讀取參數(shù)對應的區(qū)域。
[0016]②分析該參數(shù)實體成員的各個屬性分布的區(qū)域;
③綜合上述二個區(qū)域,如果設(shè)置頁的區(qū)域有效,就采用設(shè)置頁的區(qū)域,如果設(shè)置頁的區(qū)域無效,就采用上述第二步中分析出的區(qū)域。
[0017]④以上述區(qū)域為循環(huán)體,依次在該區(qū)域的下方,將該區(qū)域復制N-1份,N為參入如參數(shù)List數(shù)組的成員數(shù)量,復制后的該區(qū)域數(shù)量為N份,每份對應List數(shù)組的一個成員;
⑤依據(jù)單元格中的標記,以及對應的來自List實體成員數(shù)據(jù),將該實體數(shù)據(jù)的各個屬性與區(qū)域中的標記進行進行匹配,填充復制區(qū)域中的各個單元格。
[0018]8.設(shè)置頁是對參入?yún)?shù)進行補充說明的,主要存儲List入口參數(shù)對應的區(qū)域。
[0019]如圖2所示,有些報表,依據(jù)植入的標記,并不能判定循環(huán)區(qū)域,這時就需要借助模板設(shè)置頁的補充設(shè)置。
[0020]如圖3所設(shè)置頁中的每行,都是對報表輸出模塊中輸出函數(shù)的說明,以RANG為關(guān)鍵字的,是對List數(shù)組類參數(shù)進行補充說明的,用以說明循環(huán)區(qū)域,RANG=A2:C5,即表示A2:C5對于的單元格為該參數(shù)的循環(huán)區(qū)域。
[0021]本發(fā)明的優(yōu)點是:
在Excel模板文件中增設(shè)標記的方法來輸出報表,省去了報表設(shè)計器的研發(fā)工作,利用現(xiàn)有的Excel軟件作為報表設(shè)計器,提升了用戶設(shè)計報表的用戶體驗,以Excel文件作報表輸出的模板文件,克服了其他類型報表模板對Excel表述不全的不足,不存在諸如頁邊距設(shè)定不一致的情況,只要設(shè)計好了模塊,輸出后即可打印,且與模板最初的設(shè)計毫無差巳
[0022]說明書附圖
圖1:典型Excel模板文件樣式。
[0023]圖2:需要補充循環(huán)區(qū)域報表樣式。
[0024]圖3:模板設(shè)置頁樣式。
[0025]圖4:報表輸出整體流程圖。
[0026]圖5:字典類數(shù)據(jù)輸出流程圖。
圖6:數(shù)組類型數(shù)輸出流程圖。
【具體實施方式】
[0027]本發(fā)明在Excel模板文件中加標記的報表輸出方法,該方法視Excel軟件作報表設(shè)計器,通過在Excel模板文件中的特定標記來輸出數(shù)據(jù),本發(fā)明可以將List數(shù)組數(shù)據(jù)循環(huán)填入表格,可以將實體類數(shù)據(jù)、字典類數(shù)據(jù)的各個成員填入既定的單元格,可以將簡單類型的參數(shù)填入既定單元格。本發(fā)明省去了報表設(shè)計器的研發(fā)工作,利用現(xiàn)有的Excel軟件作為報表設(shè)計器,提升了用戶設(shè)計報表的用戶體驗,以Excel文件作報表輸出的模板文件,克服了其他類型報表模板對Excel表述不全的不足,不存在諸如頁邊距設(shè)定不一致的情況,只要設(shè)計好了模塊,輸出后即可打印,且與模板最初的設(shè)計毫無差異。
[0028]為實現(xiàn)上述目標,本發(fā)明提供有一個報表輸出模塊,該輸出模塊的核心函數(shù)實現(xiàn)報表的輸出,該函數(shù)的第一個參數(shù)是Excel模板文件名稱,緊跟其后的是一組不定長度的參數(shù),在此,本發(fā)明將后面的這些參數(shù)依次命名為:ArgO, Argl, Arg2, Arg3,…,。
[0029]報表輸出模塊的核心函數(shù)形式如下:
ExcelHelper.Export (tempFile, ArgO, Argl,…);
在實際使用中,本發(fā)明的報表輸出過程如圖4所述,輸出函數(shù)先讀取模板,再輸出報表,輸出報表是一個對參數(shù)序列遍歷輸出的過程,如果參數(shù)是List數(shù)組類型,則啟動數(shù)組類型數(shù)據(jù)輸出到Excel過程;如果參數(shù)是實體類型,則本發(fā)明先將其轉(zhuǎn)換為字典類型,在輸出到Excel ;如果參數(shù)是字典類型,則啟動字典類型數(shù)據(jù)輸出到Excel過程;如果參數(shù)屬于基本類型,則啟動基本類型數(shù)據(jù)輸出到Excel過程。
[0030]所述實體類型,是指用于描述一個具體事物的,實體上有用于描述該事物特征的屬性值,如:描述一個用戶的實體,該實體上有用戶名、用戶代碼、用戶所述的組織機構(gòu)、用戶設(shè)置的登錄密碼等信息。
[0031]字典類參數(shù)的輸出流程圖如圖5所示,在實際使用中,本發(fā)明遍歷字典的各個成員,組合形成如{Arg2.Name}參數(shù)名稱,再在Excel模板文件中尋找標記,如果找到了,就將該字符串,替換為字典成員的值。
[0032]List數(shù)組類型數(shù)據(jù)的輸出流程如圖6所示,在實際使用中,本發(fā)明先從模板設(shè)置頁中讀取循環(huán)區(qū)域,如果未讀到就從模板頁中分析循環(huán)區(qū)域的范圍,獲取到數(shù)組輸出的循環(huán)區(qū)域范圍后,先將Excel模板文件中該范圍一下的內(nèi)容復制到該區(qū)域填充范圍以下的單元格中,在按照模板的格式將循環(huán)區(qū)域的格式復制成N份,其中N為數(shù)組的長度,最后循環(huán)數(shù)組填充數(shù)據(jù)。
[0033]在實際使用中,List數(shù)組管理的數(shù)據(jù)大多是實體類型,在拿實體填充表格的過程,首先是將實體類型轉(zhuǎn)換為字典類型,遍歷該字典的各個成員,組合形成如{Arg2.Name}參數(shù)名稱,再在Excel模板文件復制出來的區(qū)域中尋找標記,如果找到了,就將該字符串,替換為字典成員的值。
[0034]本發(fā)明的優(yōu)點是:
在Excel模板文件中增設(shè)標記的方法來輸出報表,省去了報表設(shè)計器的研發(fā)工作,利用現(xiàn)有的Excel軟件作為報表設(shè)計器,提升了用戶設(shè)計報表的用戶體驗,以Excel文件作報表輸出的模板文件,克服了其他類型報表模板對Excel表述不全的不足,不存在諸如頁邊距設(shè)定不一致的情況,只要設(shè)計好了模塊,輸出后即可打印,且與模板最初的設(shè)計毫無差巳
[0035]以上所述是本發(fā)明的較佳實施例及其所運用的技術(shù)原理,對于本領(lǐng)域的技術(shù)人員來說,在不背離本發(fā)明的精神和范圍的情況下,任何基于本發(fā)明技術(shù)方案基礎(chǔ)上的等效變換、簡單替換等顯而易見的改變,均屬于本發(fā)明保護范圍之內(nèi)。
【主權(quán)項】
1.在Excel模板文件中加標記的報表輸出方法,其特征在于: 該方法視Excel軟件作報表設(shè)計工具,在Excel表格中增加特定的標記后的文件作為報表輸出模板,本發(fā)明在輸出報表的過程中,是先讀取模板文件,再輸出報表的。2.如權(quán)利要求1所述,在Excel模板文件中加標記的報表輸出方法,其特征在于: 本發(fā)明提供有一個報表輸出模塊,該輸出模塊的核心函數(shù)實現(xiàn)報表的輸出,該函數(shù)的第一個參數(shù)是Excel模板文件名稱,緊跟其后的是一組不定長度的參數(shù),傳入的參數(shù)是業(yè)務數(shù)據(jù),將被輸出到報表文件中。3.如權(quán)利要求1所述,在Excel模板文件中加標記的報表輸出方法,其特征在于: Excel模板文件由二個頁面組成,一是模板頁,即:帶特定標記的表格頁,二是設(shè)置頁,即:“模板設(shè)置”頁。4.如權(quán)利要求3所述,在Excel模板文件中加標記的報表輸出方法,其特征在于: 模板頁上的特定標記是以“ H”括起來的文本;當傳入?yún)?shù)為簡單數(shù)據(jù)類型(如int, double, float, string, datetime等)時,模板頁上的特定標記類似于:{Arg2}, {Arg3}, {Arg5}等,也就是參數(shù)的名稱,本發(fā)明在報表輸出的過程中,會將相應的值填入該單元格;當傳入?yún)?shù)為業(yè)務實體或字典數(shù)據(jù)時,模板頁上的特定標記類似于:{Arg4.UserName}, {Arg4.UserCode}, {Arg4.Department},特定標記中的內(nèi)容分二部分,并以”號隔開,第一部分為參數(shù)名稱,第二部分為參數(shù)成員的名稱,本發(fā)明在報表輸出的過程中,會將相應的值填入該單元格;當傳入?yún)?shù)為業(yè)務實體的數(shù)組時,模板頁上的特定標記類似于:{Arg4.UserName }, {Arg4.UserCode }, {Arg4.Department},特定標記中的內(nèi)容分二部分,并以”號隔開,第一部分為參數(shù)名稱,第二部分為參數(shù)成員的名稱,本發(fā)明在報表輸出的過程中會將對應區(qū)域復制N份,再循環(huán)填入數(shù)組中的數(shù)據(jù)。5.如權(quán)利要求3所述,在Excel模板文件中加標記的報表輸出方法,其特征在于: 設(shè)置頁是對參入?yún)?shù)進行補充說明的,主要存儲數(shù)組類入口參數(shù)對應的區(qū)域;設(shè)置頁中的每行,都是對報表輸出模塊中輸出函數(shù)參數(shù)的說明,以RANG為關(guān)鍵字,是對List數(shù)組類參數(shù)進行補充說明的,用以說明循環(huán)區(qū)域,RANG=A2:C5,即表示A2:C5對于的單元格為該參數(shù)的循環(huán)區(qū)域。
【文檔編號】G06F17/24GK105988983SQ201510067341
【公開日】2016年10月5日
【申請日】2015年2月10日
【發(fā)明人】尹憲文, 尹搏, 李玉奎, 杜春輝
【申請人】北京艾力泰爾信息技術(shù)有限公司