本文由 Jplateau 所撰写 版权归属于 Jplateau 作者主页 http://plateau.sicool.com | ![]() |
我是在一个星期以前接触 iReport 和 Jasperreport 的,下载最初它们并没有吸引我的兴趣(或信任),主要是他们的版本的问题(我一直不敢用版本都不到1.0的工具软件,目前它们的版本: iReport0.2.2, Jasperreport0.5.0),不过听说有人在用他们,于是就仔细看了一下(因为在 java 应用程序的 web 打印方面我一直都是采用浏览器打印,非常痛苦,所以宁可信其有不可信其无,呵呵……)
一个星期下来,我针对项目中关于报表的一些需求点进行了尝试,发现他们都可以解决,真实大快人心,于是今天把他们推荐给各位。其实我们做报表用的只是 Jasperreport, iReport 是一个 Jasperreport 的可视化开发工具(不要看它的界面有些简陋,我们要的操作他都可以帮我们轻松搞定。),当然 iReport 还有其他的用处,不过这里不做阐述。目前几乎还没有中文的介绍他们整合开发的文章,尽管如此我也不准备非常详细的介绍它们,在这里我仅将我的一些经验写出来,不乏有些地方浅尝辄止,如果想细致的研究它们还请阅读它们配套的英文文档。Jasperreport 的配套文档非常详细,该文档是收费的,不过网上有流传的电子版本,本人有幸得到一份,如果你需要可以到本人站点(http://plateau.sicool.com)获得,在此感谢 Jasperreport 的为开源世界做出的贡献。相反 iReport 的文档不多,也许作者认为其足够简单,我也是经过无数的探索才有些开发的经验。
好了,让我们进入上述两者整合开发报表的历程……
1. 首先你要得到它们最新的版本,你可以到下边的地址下载
iRport: http://ireport.sourceforge.net
Jasperreport: http://jasperreports.sourceforge.net
他们的配置也很简单:iReport 解压缩以后编辑目录下的 iReport.bat 文件即可,如下
set JAVA_HOME=C:/jdk14
set ANT_HOME=d:/ant
set IREPORT_HOME=C:/Documenti/progetti/iReport/iReport2/
rem %ANT_HOME%/bin/ant javadocs
%ANT_HOME%/bin/ant iReport
是不是很简单,你只要设置相应的一些路经就可以,这里是采用 ant 来运行,当然如果你没有安装 ant 也不想安装它,那么也可以,不过这里我买个官子,你们自己可以到解压缩以后的目录中找到相应的运行方法。呵呵,安装 ant 吧! Jasperreport 不需要任何配置,你只需将下载以后的 jar 包放到 classpath 下即可。呵呵,说来简单,可是如果没有 iReport 来替我们干“脏活”,那么做报表的工作将是怎样的痛苦~!
2. Jasperreport是如何工作的?
这里我就往简单里说了。首先要先有个 xml 文件,然后编译成 jasper 文件(以 .jasper 结尾),我们真正要使用的是编译以后的 .jasper 文件,这很像我们熟悉的 .jsp 文件,其实我们调用的是其编译以后的 servlet。
(图片来自 http://ireport.sourceforge.net/cap3.html#3.1)
不过静态的报表没有什么意思,所以有句话说得好:“A datasource + a jasper = a print”。它可以支持的输出格式如下:PDF, HTML, XML, XLS, CVS 等等。因此, Jasperreport 的原始输入就是一个 .xml 文档,想象看一个简单报表的 xml 文件也有几百行,在没有 iReport 以前用它做报表是多么痛苦。(令我不可思议的是,我一个同学公司曾经用 jasperreport 做报表,可是它们竟然没有用过 iReport,天!)。现在不用怕了,用 iReport 可以轻松的搞定这 个XML,写到这里,我想起了 struts_config.xml,也曾出现不少关于它的可视化的编辑器,呵呵。
如果在 iReport 以前,如果你要做报表,你要花上很长时间来熟悉 Jasperreport 的文档,熟悉文档的一个用途就是编写那个 xml 文件,现在你只要他熟悉文档的时间来熟悉 iReport 就可以了。
3. IReport初探
先来看一下这个(rich and very simple to user GUI)吧:
如果以前你有过用 vb 或其他的开发工具开发报表的经验的话,这个界面乍一看应该很熟悉的,如果碰巧你又熟悉 java 语言,哇,那么你用 iRepor t应该易如反掌啊,呵呵