JasperReports入門教程(五):分組打印


JasperReports入門教程(五):分組打印


背景

在報表打印中,常有的一個打印需求是一個數據集按照某一個維度(字段)來分組打印表格,分組打印多個表格,並且統計一些合集信息。本章我們做一個例子,按照年級來分組打印每個年級的成績信息,每個年級的學生總數。

方案分析

分組可以通過創建模板Group的方式來按照某一個字段分組,每個分組要打印的聚合信息可以通過創建Variable變量來實現。下面我們實現它。

數據源結構

[{"grade":"1年級學生信息","name":"1-1","score":"1","sex":"男"},{"grade":"1年級學生信息","name":"1-2","score":"2","sex":"男"},
{"grade":"2年級學生信息","name":"2-1","score":"1","sex":"男"},{"grade":"2年級學生信息","name":"2-2","score":"2","sex":"男"},
{"grade":"3年級學生信息","name":"3-1","score":"1","sex":"男"},{"grade":"3年級學生信息","name":"3-2","score":"2","sex":"男"}]

添加字段Field

前面的教程都講過如何添加Field,這里就略過。去掉模板中多余的Band

添加的Field如下

添加分組Group

1.在左側報表上右鍵->Create Group 新建一個Group Band
選擇Create Group from expression直接按照表達式來分組,表達式一般是選擇一個字段,即按照選擇的字段來分組
也可以選擇Create Group from a report object,這樣后續在添加的Group Header中一樣可以設置分組表達式。

2.選擇Field中選擇grade字段作為分組表達式依據

3.然后next,勾選上Add the Group Header,Add the Group Footer后,Finish完成。

4.添加好的Group如下所示,分組表達式為grade字段,可以修改為其他字段,如果在第1步中選擇了Create Group from a report object,同樣可以在這里設置分組表達式

在Group Header上添加打印信息

1.拖拽grade字段到Group1 Group Header 1上,此時會出現3個選項

  • No Calculation Funtion 沒有計算函數,就是直接打印字段
  • Count 計數函數,打印分組數據的總數
  • Distinct Count 唯一計數函數,打印分組數據的總數,但是過濾掉重復的數據

一般默認選擇No Calculation Funtion,如果需要計算的字段,可以后續在單獨添加

在Detail1中添加打印列表字段

前面的教程都講過如何添加打印Field,這里就略過。添加好后如下圖

打印合計數據

在分組打印中,一般會打印總數,合計總金額之類的數據,下面我們按照grade分組后,打印總人數,和年級的平均成績

1.首先添加計算變量 grade_count,類型是Integer,因為是計算總數,所以右側的Calculation要選擇Count函數,Expression選擇grade
下面的Reset Type表示計算范圍,因為是按照分組計算,所以選擇創建的分組[Group] Group1,如果是按照頁來計數要選擇Page
添加Group分組時在Variable中會自動添加一個合計總數的變量Group1_COUNT,和grade_count一樣的邏輯

2.同第1步添加變量 grade_avg,類型是Integer,計算年級的平均成績,Expression選擇score分數字段

3.添加總人數grade_count和平均分grade_avg到 Group Footer

代碼開發

本節代碼和報表模板地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM