作為java程序員,大家可能都聽說過,或用過birt, 據(jù)說,現(xiàn)在birt的東家actual,正式入駐中國市場,聯(lián)想到前些天杰表.2008的推出,今年,注定是國內(nèi)的報(bào)表軟件市場不平靜的一年。
birt的最大好處是開源,不足是水土不服,做起復(fù)雜報(bào)表來不方便,復(fù)雜報(bào)表主要說的是行上,列上有多個(gè)并列分組的交叉報(bào)表,國產(chǎn)報(bào)表工具大都關(guān)注復(fù)雜報(bào)表需求,而洋品牌的報(bào)表軟件工具,如jasperreport,crystalreport,這方面關(guān)注不夠,所以做起復(fù)雜報(bào)表來很吃力。
做什么事情必須先有觀念,然后,付諸實(shí)現(xiàn),做軟件則更進(jìn)一步,必須將這些觀念結(jié)構(gòu)化,即模型化。對復(fù)雜報(bào)表需求的處理,國內(nèi)報(bào)表軟件廠商時(shí)下,用得最多的是類excel報(bào)表模型,即以單元格為中心報(bào)表模型,最早產(chǎn)品化的,是用友華表,當(dāng)然它不屬于java陣營的,java陣營的現(xiàn)在有潤乾,finereport,杰表4.0,類excel報(bào)表模型大家都覺得,功能很強(qiáng),但最大問題是,學(xué)習(xí)起來不方便,不知道你在大學(xué)里,微積分考多少,如果你90分以下,那你最好別碰那東西。
杰表.2008采用的復(fù)雜報(bào)表模型,相對來說,比excel模型容易得多,比如下圖是一個(gè)典型的復(fù)雜報(bào)表,該報(bào)表用于按不同分類方法
統(tǒng)計(jì)培訓(xùn)學(xué)員人數(shù),該表列上存在多個(gè)分組(培訓(xùn)類型、累計(jì)培訓(xùn)時(shí)間、參加培訓(xùn)總?cè)藬?shù)、培訓(xùn)內(nèi)容、渠道類型),分組之間不存在嵌套關(guān)系的,即分組是并列的。行上存在一個(gè)按學(xué)員
行政級(jí)別為依據(jù)的分組。
復(fù)雜報(bào)表的復(fù)雜性在于結(jié)構(gòu)復(fù)雜,比如上圖報(bào)表列上存在多個(gè)并列分組,不僅如此,行上也可能存在多個(gè)并行分組;不僅有多個(gè)并列分組,也可能各并列分組的嵌套數(shù)不一樣;不僅各個(gè)分組來源于同一個(gè)
數(shù)據(jù)集,也可能來自多個(gè)不同的數(shù)據(jù)集。
盡管如此,我們?nèi)匀豢梢园褟?fù)雜的交叉報(bào)表,看作下圖所示的結(jié)構(gòu),表格包括A,B,C,D四部分,其中B,C是兩個(gè)表格,決定了交叉表的結(jié)構(gòu)。B表格非常特殊,第一,該表格向右生長的,而一般我們常見向下生長,如C 表格。第二,該表格有多個(gè)并列分組,而一般報(bào)表工具中,表格對象最外圍只能有一個(gè)分組,盡管其嵌套數(shù)是可以多重的。
杰表.2008以上述結(jié)構(gòu)分析為基礎(chǔ),引入了超級(jí)表格對象,該對象就是通過嵌入兩個(gè)擴(kuò)展方向不同的子表格,行頭表和列頭表,來完成交叉報(bào)表的結(jié)構(gòu)性問題。兩表均可以有任意多的并列分組,每個(gè)分組可以有
層次不同的嵌套。下圖(a)是
設(shè)計(jì)面板中的超級(jí)表格對象,下圖(b)是該對象子部件的層次關(guān)系,其中對象3就是行頭表,對象4就是列頭表。
杰表的超級(jí)表格對象結(jié)合杰表的DOM報(bào)表數(shù)據(jù)模型,可以演化出任意復(fù)雜的多源,多組交叉表,下面試舉幾例說明之。(點(diǎn)擊進(jìn)入查看)
列上并行分組交叉表
層次不等的交叉表
行列并行分組的交叉表
多數(shù)據(jù)集的交叉表
計(jì)算比去年增長數(shù)
計(jì)算比去年同期增長數(shù)
計(jì)算占比
顯示排名
按照匯總值排序的交叉報(bào)表
交叉表折頁處理
交叉表居中