用了几天JasperReport,写下一点心得.希望对于入门JasperReport的同仁们有帮助.
首先,需要明白的是什么是report.通俗一点说,就是将数据以某种格式展现出来.在这里2有2格重要的方面,即数据和展现.
对于数据,无非就是数据库里的数据以及经过对这些原始数据处理的数据.展现就是以某种格式将这些数据表现出来.
对于一个刚开始接触JasperReport的人来说,恐怕首先一点概念都不懂.OK,我将围绕上面提到的2个方面展开来说.
如何制作一个JasperReport报表,这是我们最关心的.
步骤通常如下:
Step1:创建一个表现数据的template,这个就是一个模型了,只需要将数据往里面装即可.
如何创建一个template?可以采用iReport来设计,他的最新版本支持当前JasperReport的最新版本1.3.3(截止撰写本文的日期).这样你只需要往里面拖拖element即可,例如StaticText,TextField等.
注意,这个template文件是以.jrxml结尾的,用记事本打开,无非就是一个xml文件而已.
Step2:编译step1创建的template ,即jrxml文件.这样会编译为一个jasper文件,这是一个二进制文件.
问题:为什么要编译它?
其实也不是必须的,也可以在运行时来编译.仔细一想,如果在运行时来编译,如果有100个用户调用相同的report,难道系统会编译100次?这样下来,其效率极其低下.如果将之直接编译好,也就节省了这100次的时间了.所以还是编译为好,从另一个角度来说,report的模板很少改变的.
问题又来了,如何编译呢?最简单的方式是利用iReport来编译,这个和IDE有点类似.当然还有其他的方法来编译,那就是JasperReport自己提供的API来编译,不过这个还需要写代码等,有点麻烦,不过等我们熟悉了JasperReport之后,再使用也未尝不可.刚开始入门时,越简单越好.
Step3:填充数据,拿行话说就是fill report.
本来这步可能在step2也可能涉及到.但为了系统讲解,还是移到这里.JasperReport填充数据有多种方法,不过最常用的就2种:一是直接在jrxml文件里嵌入sql语句,而是创建一个自己的数据源,记得这个数据源从JRDataSource继承而来.JRDataSource有个方法一定要实现,即next以及getFieldValue,具体参见其API
Step 4,将数据表现出来
JasperReport很明显可以将数据存储为PDF,xls,html等.
可能我们最常见的是将数据在浏览器直接显示,那么如何做到呢?很简单, JRHtmlExporter就可以完成.设置以下参数,然后导出即可.导出的可是html数据哟.只需要将这些html数据在页面上显示就没有问题了.具体参看JRHtmlExporter的api文档.
也许你还想将report导出到pdf,xls,doc文档,非常简单,利用jasperReport提供的serverlet类即可. net.sf.jasperreports.j2ee.servlets.PdfServlet用于PDF, net.sf.jasperreports.j2ee.servlets.XlsServlet用于xls, net.sf.jasperreports.j2ee.servlets.RtfServlet用于rtf.
如果对于JasperReport自带的不满意,那就自己写吧.
以上就是一些基本步骤.后面将写一篇文章介绍template的结构以及组成.