其实这个项目是好几年的了,现在重新翻出来是因为发现网上有很多朋友提问如何采用JasperReport实现动态报表的问题。当然网上也有解决方案和例子,但不外乎采用JasperReport的Api去操作报表中的元素,从而达到运行时动态生成报表设计的目的。个人认为这不是最好的方法,主要是这些操作JasperReprot元素的api晦涩难懂,总之对于我来说是一件非常崩溃的是(如果你也有采用代码的方式写ui设计的话,相信你也一样感同身受)。
基于这样我给出的是另外一种解决方案,通过分析jasper的报表设计文件jrxml,根据自己的需要采用模板语言生成自己的动态模板,使用自己的动态模型通过填充模板的方式来完成动态报表的生成。
其它不说,附件为源代码(开发环境:eclipse3.3 jdk >=1.6)。注意:
1.解压,采用eclipse打开,重新把第三的包添加到classpath下( ${dynaJasperProject}/lib/**.jar).
2.运行ClassPath:TestDynaJasper.java.打开d:/test.pdf可以查看效果。
3.可以改变修改TestDynaJasper.java类,导出不同格式的文件。
4.导出html文件打开后有问题,你可以重新设置自己的报表模板。模板在classpath:nst.report.jasper.common.template_2010.4.20.jrxml
下面是一些主要的类说明:
1.nst.report.jasper.ext ---外部程序主要抵用该包下面的类接口来使用动态报表功能
2.DefaultDynaJasperCompiler.java --外部程序交互类,其它接口主要是调用该类来使用动态报表的功能
3.ReportInfo.java ColumInfo.java --外部使用报表模型
关于 报表列的定义,请查看columnInfo中的字段定义。这里特别说明一下几个属性:
a)字段类型:可以指定, 表示为date,int,double,str。如果不指定,系统会根据报表数据集合的一个元素(list.get(0)进行判断,如果第一个元素的某些字段为NULL,那么系统会默认为是string类型,在实际中不是string类型的情况下,要进行特别指定。
b) 列长度:可以指定,在不指定的情况下系统会根据字段类型有一个默认长度: 日期类型宽度 80 数字类型宽度80 字符类型宽度 150。但这些都是相对值,系统最终会在生成报表设计的时候根据纸张宽度计算出实际值
c) 显示格式:可以不添加,按系统操作处理, 主要针对 int , double, date类型 例如double 可以表示为 #,##0.0000 保留 4位小数 (默认), date -- yyyy-MM-dd(默认) yyyMMdd
d) 对齐方式:可以不指定,按照系统默认处理: 字符--左对齐 日期--居中 数字--右对齐
如果有朋友想要eclipse工程(源码+第三方包)请到我的个人博客上下载http://www.chlusoft.com/tech/index.jhtml
原创文章,转载请注明出处:http://www.chlusoft.com/tech/344.jhtml
相关推荐
JasperReport 中交叉报表指南
jasperreport 6.4.1报表动态列,以及生成导出html,可直接导入到eclipse中进行运行,包含一个完整的demo
NULL 博文链接:https://yangzc106.iteye.com/blog/929759
实现了jasperReport进行报表动态列的实现,使用者只需要利用eclipse将工程文件导入,即可查看运行结果的展示,不需要其他的配置和jar包如果想进行动态展示只需要修改构造参数就可以看到动态的展示
JasperReport 水晶报表 , 支持子报表 多数据源。
程序,包括 J2EE,Web 应用程序中生成动态内容,它主要目的是辅助生成面向页面的(page oriented),准备付诸打印的文档。总的而言,JasperReports 主要分成三个部分,包括数据报表 设计、数据填充与数据报表导出。
JasperReport报表设计总结
程序员 使用 jasperreport studio生成中文报表 spring boot 教程
springboot整合JasperReport实现报表功能文章所需的全部资源
对fineReport,jasperReport,birt报表插件做了很详细的对比,帮助你抉择选择那个款报表插件做开发。
jasperreport实现动态表头的例子
子报表的列子刚开始学的不知道如何下手,看了这个例子都明白了
JasperReport+iReport报表开发手册.pdf
JasperReport+iReport报表工具详细开发手册;iReport-JasperReports报表开发指南
基于jasperreport和ireport的java动态报表组件,包含源代码及详细使用方法介绍。最大优点是通过xml动态配置报表模板,调用起来相当简单,只需要给出一个url就可以下载或者打开报表了
jasperReport 动态合并单元格示例
jasperReport 进行报表开发 可以输出HTML ,JSP,PDF等格式