如何使用JasperReport做动态报表

其实这个项目是好几年的了,现在重新翻出来是因为发现网上有很多朋友提问如何采用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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值