jasperreport不适用子报表实现中国式分组报表功能

 
副标题:   单行统计报表中如何通过一列的值决定另一列是否显示

 
 上面这个报表的统计要求是当“列9”的值不变动时,“列1”的值就不重复打印。
如上图效果 “列9”第1,2行值相同,所以“列1” 只第一行显示,第二行空白。
同样,“列9”第3,4行值相同,只显示第3行,第4行空白。
 
上面报表展现效果,按照我以前的一贯实现思路 ,想到的是运用jasperreport的子报表(subReport)去实现,即
根据“列9”的数据,构建好一个查询的数据的视图,视图数据样例如下:图1


  然后根据“列1”列值做分类统计,报表模板样式如下:


 
  然后根据主报表中传递过来的“列1”的值,在子报表中和隐藏的“列1”的值做比较,从而展现相应的数据。
 
上面这种做法实现起来比较麻烦,且不是最优方案。
 
下面给出第二种方案:
方案前提:必须使用javabean数据源
jasperreport使用javabean数据源,默认使用JRDataSource dataSource = new JRBeanCollectionDataSource(list);
JRBeanCollectionDataSource 做报表数据源,这个类中有getFieldValue 方法用于获取当前bean的属性。
我们可以重写JRBeanCollectionDataSource 类,并重写getFieldValue 方法
 在重写getFieldValue 方法中我们可以根据“列9”的值 去判断 “列1”的 值 是否打印,从而实现图1 的效果。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值