在报表打印的过程中,打印记录的归并,合计是一个非常普遍的场景,下面我承接<<如何使用JasperReport做动态报表>>,如何在动态报表实现行的归并和合计。
在Jasper报表本身提供的合计和归并的功能,经过使用,发现要和上一篇提到的Jasper动态报表结合非常困难。
第一在归并问题上,jasper报表的归并必须以报表呈现中的某一行进行归并,但在实际过程中,我们往往希望通过一个不进行打印呈现的行进行归并。
第二在汇总行上,jasper报表会在每一页上加上一个汇总信息,但在实际运用过程中,我们只希望在报表的第一行出现合计数据,而不是每一页。
第三为了兼容归并和统计场景,我们必须维护更复杂的报表模板或者是维护几套模板。
基于此,我在这里给出另外一个解决方案:归并和统计功能,我们不使用JasperReport, 我们在动态报表引擎通过处理要呈现的数据集合 DateList(归并,合计),然后使用再归并统计过的数据集合进行报表填充,来代替jasperReport的归并统计功能。这样做可以:
第一:归并可以不依赖与报表中的呈现数据,我们在归并数据集时,完全可以根据一个隐藏字段进行,而这个字段压根不会在jasperReport中出现
第二:我们把统计数据插入到集合中的首位,这样在报表呈现时,表现为只有第一页的第一行为统计数据。
第三:我们可以沿用以前的报表模板,报表模板维护简单
当要使用DynaJasper的归并和统计功能是,只要在构造模型是,给响应的列添加响应的属性即可.
查看nst.report.jasper.ext.ColumnInfo的如下属性
//是否为统计列,默认为false,如果为true,那么该列将会被统计
//在没有统计的情况下,不会在首页首行添加统计行
//统计列数据必须为数字类型
private boolean gatherColumn = false;
/**
* 是否为归并行的依据列,在做数据处理时,<br>
* 如果所有groupColumn=true的列和上一次的列数据相同,<br>
* 那么会被认为是同一条数据.<br>
* 这个时候所有列printedInGroup=true的列数据会被设置成NULL<br>
* printedInGroup = false 的列数据则保持原值<br>
*在没有归并列的情况下,不进行归并
*/
private boolean groupColumn = false;
/**
* 在归并行时是否进行归并,在做数据处理时,<br>
* 如果所有groupColumn=true的列和上一次的列数据相同,<br>
* 那么会被认为是同一条数据.<br>
* 这个时候所有列printedInGroup=true的列数据会被设置成NULL<br>
* printedInGroup = false 的列数据则保持原值
*/
private boolean printedInGroup = true;
/**
* 是否为隐藏列,隐藏列不进行显示
*/
private boolean hided = false;
下载附件后,解压后使用eclipse打开DynaJasperProject工程,运行classpath:TestMergeRecord查看效果(该附件和《如何使用JasperReport做动态报表》的源码附件相同,避免重复下载)。
另外在classpath:TestTipText中展现另外一个小功能:在报表的右上角展现不同的信息。
效果图:
由于整个完整的eclipse的工程较大,要整个工程源码的朋友可以到我的个人博客上下载(http://www.chlusoft.com/tech/index.jhtml)
原创文章,转载请注明个人博客出处:http://www.chlusoft.com/tech/345.jhtml
相关推荐
jasperreport 6.4.1报表动态列,以及生成导出html,可直接导入到eclipse中进行运行,包含一个完整的demo
JasperReport 中交叉报表指南
NULL 博文链接:https://yangzc106.iteye.com/blog/929759
实现了jasperReport进行报表动态列的实现,使用者只需要利用eclipse将工程文件导入,即可查看运行结果的展示,不需要其他的配置和jar包如果想进行动态展示只需要修改构造参数就可以看到动态的展示
JasperReport 水晶报表 , 支持子报表 多数据源。
springboot整合JasperReport实现报表功能文章所需的全部资源
JasperReport报表设计总结
jasperReport 进行报表开发 可以输出HTML ,JSP,PDF等格式
jasperReport 动态合并单元格示例
使用subreport实现多表分页并动态适应列数,目前还在努力实现中,后续将更新。。。
jasperreport创建多个List数据源报表 通多个detail实现多个table效果,简单 快捷
整合Struts2+JasperReport Web报表应用示例 整合Struts2+JasperReport Web报表应用示例
所需要jar包2 博文链接:https://zmx.iteye.com/blog/581075
jasperreport实现动态表头的例子
NULL 博文链接:https://bighappy1983.iteye.com/blog/1850827
JasperReport6.4.0报表设计,webSpringmvc,maven,idea,请使用jdk1.7
该工程下有ssh所需jar包,hicharts报表导出功能所需jar包,以及Jasperreport报表导出所需的jar包,主要是利用Jasperreport实现报表导出功能,可以完整跑通
JasperReport通用报表代码,其实说不上通用,不过可以当入门参考。