Java報(bào)表軟件技術(shù)討論

          Style Report報(bào)表專(zhuān)題
          posts - 97, comments - 3, trackbacks - 0, articles - 3
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          交叉表(Cross Tabulations)是一種常用的分類(lèi)匯總表格。使用交叉表查詢,顯示源于表中某個(gè)字段的匯總值,并將它們分組,其中一組列在數(shù)據(jù)表的左側(cè),另一組列在數(shù)據(jù)表的上部。行和列的交叉處可以對(duì)數(shù)據(jù)進(jìn)行多種匯總計(jì)算,如:求和、平均值、記數(shù)、最大值、最小值等。使用交叉表查詢數(shù)據(jù)非常直觀明了,被廣泛應(yīng)用。

           

          交叉報(bào)表是報(bào)表當(dāng)中常見(jiàn)的類(lèi)型,屬于基本的報(bào)表,是行、列方向都有分組的報(bào)表。這里牽涉到另外一個(gè)概念即分組報(bào)表。這是所有報(bào)表當(dāng)中最普通,最常見(jiàn)的報(bào)表類(lèi)型,也是所有報(bào)表工具都支持的一種報(bào)表格式。從一般概念上來(lái)講,分組報(bào)表就是只有縱向的分組。傳統(tǒng)的分組報(bào)表制作方式是把報(bào)表劃分為條帶狀,用戶根據(jù)一個(gè)數(shù)據(jù)綁定向?qū)е付ǚ纸M,匯總字段,生成標(biāo)準(zhǔn)的分組報(bào)表。

           

           

          例如下圖是典型的分組交叉表格是一份銷(xiāo)售人員銷(xiāo)售情況的匯總表,其中垂直方向是對(duì)銷(xiāo)售收入來(lái)源進(jìn)行的分組(包括銷(xiāo)售地區(qū)、客戶信息), 而水平方向中則是對(duì)銷(xiāo)售收入和平均價(jià)格進(jìn)行匯總。此匯總表復(fù)雜百出,涉及到縱向分組,又涉及到橫向求和。

          java報(bào)表工具技巧--交叉分部報(bào)表制作

          接下來(lái)看用Style Report 這款java報(bào)表工具如何實(shí)現(xiàn)此表的制作,過(guò)程步驟比較多,請(qǐng)耐心閱讀:

           

           

          1. 打開(kāi)報(bào)表設(shè)計(jì)器,在工具欄中選擇“新建”。 在“新建資源”對(duì)話框中,選擇“空白表格式報(bào)表”。

           

          2. 在報(bào)表的空白處點(diǎn)擊右鍵菜單,選擇“腳本”選項(xiàng),然后打開(kāi)報(bào)表腳本編輯窗口。

           

          3. 在報(bào)表腳本編輯窗口的“裝載”標(biāo)簽下輸出腳本:

           

              var q1 = runQuery('customers');

           

              var q2 = runQuery('Order details');

           

          以上腳本是將兩個(gè)報(bào)表數(shù)據(jù)查詢('customers' 和 'Order details')中的數(shù)據(jù)存放在q1,q2兩個(gè)變量中。

           

          4. 關(guān)閉報(bào)表腳本編輯窗口,在右側(cè)的工具箱中選擇”表格“組件,放入報(bào)表中。

           

          5. 點(diǎn)擊表格,打開(kāi)右鍵菜單,在右鍵菜單中選擇”表格->轉(zhuǎn)換為公式表“。

          java報(bào)表工具技巧--交叉分組報(bào)表制作

          6. 點(diǎn)擊表格,打開(kāi)右鍵菜單,在右鍵菜單中選擇”屬性”,打開(kāi)表格屬性窗口,選擇“標(biāo)題和結(jié)尾”標(biāo)簽,在表格行中輸入“6”,在表格列中輸入“4”,標(biāo)題行為“0”。 
          java報(bào)表工具技巧--交叉分組報(bào)表制作

          下面的步驟中進(jìn)行垂直方向上的數(shù)據(jù)分組設(shè)定,數(shù)據(jù)分組為兩層分組,分別是地區(qū)和客戶。

           

          7. 點(diǎn)擊表格中cell[2,0]單元格(第三行,第一列),在下方的表格屬性窗口中選擇“數(shù)據(jù)“標(biāo)簽,然后在公式輸入框中輸入以下腳本:

           

              toList(q1['state']);

           

          q1['state']是提取“customers”數(shù)據(jù)查詢中的“state"列的數(shù)據(jù),toList 函數(shù)的作用是獲取q1['state']中沒(méi)有重復(fù)記錄的所有數(shù)據(jù)。

           java報(bào)表工具技巧--交叉分組報(bào)表制作

          8. 在屬性窗口,選擇”擴(kuò)展單元格“和”垂直“方向的擴(kuò)展。這個(gè)設(shè)置的作用是將表格單元格按照真實(shí)的數(shù)據(jù)列進(jìn)行擴(kuò)展。

           

          9. 設(shè)置表格單元格的名稱(chēng)為"st",然后點(diǎn)擊”應(yīng)用“按鈕。

          java報(bào)表工具技巧--交叉分組報(bào)表制作

          10. 按住”Shift“鍵同時(shí)選中 cell[3,0]和 cell[4,0]兩個(gè)表格單元格,然后打開(kāi)右鍵菜單,在右鍵菜單中選擇”表格->合并單元格“。
          11. 在下方的屬性窗口中選擇“數(shù)據(jù)“標(biāo)簽”,然后在公式輸入框中輸入以下腳本:
              toList(q1['company_name@state:$st']);
          q1['company_name@state:$st']是提取“customers”數(shù)據(jù)查詢中的“company_name"列的數(shù)據(jù)結(jié)果,并且”company_name“將根據(jù)對(duì)應(yīng)的”state“列進(jìn)行分組。
          12. 在屬性窗口,選擇”擴(kuò)展單元格“和”垂直“方向的擴(kuò)展,設(shè)置單元格的名稱(chēng)為"comp",在行分組中選中”st“,然后點(diǎn)擊”應(yīng)用“按鈕。java報(bào)表工具技巧--交叉分組報(bào)表制作

          通過(guò)以上的步驟,垂直方向上的兩層分組(第一層:state,第二層:company_name)就被建立完成了

           

          13. 按住”Shift“鍵同時(shí)選中 cell[0,3]和 cell[1,3]兩個(gè)表格單元格,然后打開(kāi)右鍵菜單,在右鍵菜單中選擇”表格->合并單元格“。

           

          給對(duì)應(yīng)的表頭加上對(duì)應(yīng)的文字。

           

          Cell[0,1] = '數(shù)量合計(jì)'

           

          Cell[0,2] = '毛利額'

           

          Cell[1,1] = '平均單價(jià)'

           

          Cell[1,2] = '折扣金額'

           

          Cell[5,0] = '銷(xiāo)售合計(jì)'

           

          Merged Cell[0,3] = '凈收入'
          java報(bào)表工具技巧--交叉分組報(bào)表制作


          14. 創(chuàng)建合計(jì)列,合計(jì)列是指定數(shù)據(jù)列的聚合,合計(jì)列被加入到最低層的分組上。加入下面的公式到對(duì)應(yīng)的表格單元格中。

           

          在 Cell[3,1]單元格中插入:

           

              sum(q2['Quantity@Company:$comp']);

           

          在 Cell[4,1]單元格中插入:

           

              average(q2['Price@Company:$comp']);

           

          在 Cell[3,2]單元格中插入:

           

              sum(q2['Total@Company:$comp']);

           

          在 Cell[4,2]單元格中插入:

           

              sum(q2['=Total*Discount@Company:$comp']);

           

          設(shè)置Cell[3,2]表格單元格的名稱(chēng)為:"grossRevenue"

           

          設(shè)置Cell[4,2]表格單元格的名稱(chēng)為:"discountRevenue"

           

          15. 創(chuàng)建凈收入數(shù)據(jù)列,"凈收入=總收入-折扣金額"。首先合并表格單元格,按住”Shift“鍵同時(shí)選中 cell[3,3]和 cell[4,3]兩個(gè)表格單元格,然后打開(kāi)右鍵菜單,在右鍵菜單中選擇”表格->合并單元格“。然后在合并的表格單元格輸入以下腳本:

           

              $grossRevenue-$discountRevenue;

           

          16. 設(shè)置合并的表格單元格的名稱(chēng)為”netRevenue“ ,凈收入為每個(gè)地區(qū)中客戶的凈收入。

           

          17. 設(shè)置Cell[2,3]表格單元格的腳本為:

           

              sum($netRevenue);

           

          此凈收入為每個(gè)地區(qū)的合計(jì)

           

          18. 設(shè)置Cell[5,3]表格單元格的腳本為:

           

              sum($netRevenue);

           

          此凈收入為所有地區(qū)的總計(jì)

          java報(bào)表工具技巧--交叉分組報(bào)表制作

          最后依照最初的表格,在各表格單元格中設(shè)置字體格式、數(shù)字格式等。點(diǎn)擊Preview即可得到此表: 

          java報(bào)表工具技巧--交叉分組報(bào)表制作

           

           

           

          主站蜘蛛池模板: 章丘市| 宜兴市| 正镶白旗| 宝鸡市| 嘉荫县| 南郑县| 兴业县| 全南县| 武穴市| 扶绥县| 策勒县| 鞍山市| 德安县| 罗田县| 阳春市| 吉首市| 大埔县| 罗甸县| 玉山县| 陈巴尔虎旗| 沛县| 营口市| 云南省| 金门县| 阿尔山市| 达孜县| 威信县| 山东省| 通海县| 云霄县| 丹棱县| 固阳县| 紫金县| 武定县| 桦川县| 余姚市| 江油市| 榆林市| 天峻县| 辛集市| 馆陶县|