Jasper Report 6.8 根据后台数据生成动态报表(一) :摸索历程*
早年做通用项目时,特别注重公共模块的开发,在使用java spring boot开发web版本时,就想如何实现通用报表模块。
网上收费报表很多,本人想自己实现,最终比对,决定采用jasper Report,这个报表思想类同于水晶报表,fastreport. quickreport。
由于API缺失, 中间摸索很长时间,走了一些弯路。
使用JR 有三个途径
- 根据JR提供的类动态生成。以下部分代码提供思路(忽略一些参数取值,表结构后期上传)
asperDesign rptDesign = new JasperDesign();
rptDesign.setName(jrInitModel.getRptFileName()); // 报表名称入代码片`
// 报表标题
rptDesign.setPageWidth(dftRptMaster.getPageWidth());// 纸宽度
rptDesign.setPageHeight(dftRptMaster.getPageHeight());// 纸高
rptDesign.setColumnSpacing(dftViewMaster.getColSpace()); // 列间距
rptDesign.setLeftMargin(dftRptMaster.getPageLeft()); // 边距
rptDesign.setRightMargin(dftRptMaster.getPageRight());
rptDesign.setTopMargin(dftRptMaster.getPageTop());
rptDesign.setBottomMargin(dftRptMaster.getPageBottom());
rptDesign.setTitleNewPage(dftRptMaster.getBePrintTitlePerPage() == 1); // 每页都打印标题否
if (dftRptMaster.getBePageVcenter() == 1) { // 竖向打印页
rptDesign.setOrientation(OrientationEnum.PORTRAIT);
} // 竖向
else {
rptDesign.setOrientation(OrientationEnum.LANDSCAPE); // 横向
}
后面代码不外乎根据对象来创建对像,根据报表表数据置来设置对象的属性,最终生成JRXML文件,并且编译成jaxper文件然后输出``
- 使用第3方包装jasper类(DynamicReport),提供更简单生成的方式,大家网上可看有人做过。
- 在使用JR, IDE手工做报表模板的过程中,了解JR的原理就是生成一个XML文件,使用类也是如此,干脆用domj4来生成xml文件,并且用jr提供的方法编译就不OK了?反页更简单,就是繁琐一点,容易出错。
本人已采用第3种方法使用动态生成报表并且导成HTML文件 ,或在IDE 中打开预览,后期我将完善成一个独立模块,集成到项目中。此几篇文章提供思路借鉴(本文件记录时只做了第1步)
1)采用简单方法(不使用table,list等JR组件)来生成清单式,分组式报表 (大部分项目这种报表最多)
2)生成主从式(子报表,采用list, table等)报表,这个报表复杂一些
3)独立图表或列表+图片方式的报表
4)结合前端VUE来设计格式化报表,应用于套打
以下为记录过程
第一:数据表结构设计(本结构是结合考虑前端表格显示数据的设计)
- 报表表头参数
- 表格栏位内容设计
- 报表栏位结构
以上表结构参考,目前部分设置字段好象无法实现或无必要实现
后一篇 :Jasper Report 6.8 根据后台数据生成动态报表(JRXML文件实现)(二)生成XML文件(支持json,bean,map list数据源)