zoukankan      html  css  js  c++  java
  • 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)

    本节代码和报表模板

  • 相关阅读:
    2014 Super Training #7 C Diablo III --背包问题(DP)
    2014 Super Training #7 E Calculate the Function --矩阵+线段树
    2014 Super Training #7 B Continuous Login --二分
    2014 Super Training #10 G Nostop --矩阵快速幂
    2014 Super Training #10 D 花生的序列 --DP
    2014 Super Training #10 C Shadow --SPFA/随便搞/DFS
    2014 Super Training #6 F Search in the Wiki --集合取交+暴力
    2014 Super Training #6 G Trim the Nails --状态压缩+BFS
    2014 Super Training #9 F A Simple Tree Problem --DFS+线段树
    2014 Super Training #8 G Grouping --Tarjan求强连通分量
  • 原文地址:https://www.cnblogs.com/xyyz120/p/12694948.html
Copyright © 2011-2022 走看看