JasperReports入門教程(三):Paramters,Fields和Detail基本組件介紹


JasperReports入門教程(三):Paramter,Field和Detail基本組件介紹


前言

前兩篇博客帶領大家進行了入門,做出了第一個例子。也解決了中文打印的問題。大家跟着例子也做出了demo,但是大家可能還是比較懵的。肯定有很多疑問,想這些組件都是怎么使用,下面我們就從最基本的Paramters,Fields和Detail來給大家講解下用法。

Paramters

  • Paramters是一張報表中全局的屬性,初始自帶了一些屬性,也可以自定義屬性。大家可以理解為存放一個報表的表頭數據
  • Paramter的屬性可以是任何類型,String,Long,Double,List等等
  • Paramter可以用在報表的任何區域,一般用在報表的Title,Page Header,Page Footer區域

1.Paramters的創建:在左側的Outline框,在Paramters上右鍵 Create Paramter 就可以創建一個新的Paramter,在右側可以設置名稱和類型。使用時直接拖拽到相應的區域即可。如下圖所示

2.在Java程序中可以通過給對應的Paramter賦值,在打印時就可以輸出你想要的結果。代碼如下所示

//給Paramter賦值
HashMap<String, Object> parameters = new HashMap<String, Object>();
parameters.put("name", "小明");//這里的key要和報表中的Paramter的name對應
parameters.put("age", "18");

//中間代碼省略

//核心代碼,把Paramters傳入JasperReport提供的方法,並返回JasperPrint 對象
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperStream, parameters, dataSource);

Fields

  • Fields是報表中數據集合中的字段屬性,只能自定義Field字段。大家可以理解為一個報表的明細列表數據
  • Field的屬性可以是任何類型,String,Long,Double,List等等
  • Field只能用在報表的Detail區域

1.Fields的創建:在左側的Outline框,在Fields上右鍵 Create Field 就可以創建一個新的Field,在右側可以設置名稱和類型。使用時直接拖拽到相應的區域即可。如下圖所示

2.在Java程序中可以通過集合給集合中的每一條數據的Field字段賦值,在打印時就可以輸出你想要的結果。代碼如下所示

//給Field賦值
List<HashMap> list = new ArrayList<>();
for (int i = 0; i < 100; i++) {
    HashMap<String, String> item = new HashMap<String, String>();
    item.put("Field1",  "Field1-" + i);
    item.put("Field2",  "Field2-" + i);
    item.put("Field3",  "Field3-" + i);
    item.put("Field4",  "Field4-" + i);
    item.put("Field5",  "Field5-" + i);
    list.add(item);
}

//中間代碼省略

//核心代碼,用包含Field字段的集合創建一個JRDataSource,傳入JasperReport提供的方法,並返回JasperPrint 對象
JRDataSource dataSource = new JRBeanCollectionDataSource(list);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperStream, parameters, dataSource);

Detail

  • Detail是打印Field字段的區域,一個報表可以有多個Detail,在Detail上右鍵可以通過Add Detail Band來增加新的Detail區
  • Detail會把傳遞進來的list的數據,循環打印出來,有多條就會打印多行,一頁打印不下就會從下一頁繼續打印
  • 如果通過Detail來打印表格,Detail的高度最好和要打印的Field高度一樣,這樣每行就不會有縫隙,打印出來和表格一樣的效果
  • 如果存在多個detail,他們是交替打印

動態組件常用的屬性的用法

1.所有動態的組件都是通過Expression表達式來綁定要打印的數據,比如Paramter,Field,Image,Table組件等等。

表達式參考

2.所有組件都有一塊Print When屬性,其中有一個Print When Expression表達式,可以在返回true的情況下打印,在false的情況下不打印。這個表達式可以依賴其他Paramter,Field,可以通過它實現一些特殊的打印需求
表達式例子:new Boolean($F{showtitle1}),new Boolean(true)

本節代碼和報表模板


免責聲明!

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



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