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