JAVA涂鸦
关于JAVA的点点滴滴
posts - 50,  comments - 689,  trackbacks - 0

概述

    Jasperreport是http://www.sourceforge.net上一个优秀的开源的报表工具,其强大的功能及免费的特性得到了广大的认可和赞誉,现在的最新版本是Jasperreport0.6.1。下载地址是
https://sourceforge.net/projects/jasperreports/
    iReport是jasperreport的一个IDE的开发工具,使Jasperreport变得更易用,其最新版本是iReport0.4.0支持到Jasperreport0.6.1,和Jasperreport一样也在不断的更新中。下载地址是https://sourceforge.net/projects/ireport/
    关于利用这两个工具开发Web报表,这里已经有几份很好的材料:
    JasperReport与iReport的配置与使用.pdf(该文档可用于一开始入门熟悉这两个工具)
    TheJasperReportsUltimateGuide.1.0.pdf (这个本是一份收费的文档,讲述了Jasperreport生成的原理方面的知识,如果你打算能熟练的使用Jasperreport这个报表工具,需要好好看这份英文资料的)
    http://www.javaresearch.org/forum/thread.jsp?column=316&thread=14374
(这是我在论坛上写的一个另一篇入门指南)---(转贴者:无法打开此连接)

第一次运行

    第一次总是比较痛苦,使用这个报表工具也是,下面是我总结出的一些运行中比较容易出现的问题。
我的总结是建立在使用iReport0.4.0 + Jasperreport0.6.1)。至于这两者的组合,我用到现在还是觉得比较顺的。从souceforge 上下载iReport-0.4.0.zip 解压后,要注意一点,把你的JDK的tools.jar拷到你解压后的iReport的lib目录下,做中文 的pdf报表还需要把iTextAsian.jar拷到lib下,如果你用的是Oracle的数据库,那么你还需要把class12.jar也就是 Oracle的Jdbc包拷到lib下,其他数据库也一样。
好了准备工作做好了,运行iReport.bat。如果比较看到UI界面,说明
iReport成功运行了。
 
    如果dos界面一闪而过,说明没有成功。按以下步骤可解决该问题:
    确定系统安装有JDK,而且系统环境设置,path里有JDK的bin目录,并有java_home参数,以下是我的几个参数的配置情况可供参考:
1  java_home   D:\JBuilder9\jdk1.4
2  path        D:\JBuilder9\jdk1.4\bin;D:\Install\ant161\bin
3  classpath    D:\iReport042\fonts;E:\Project\EssV6\webapps\WEB-INF\classes
4  ant_home   D:\Install\ant161
(关于上面参数设置的说明:
    iReport0.4.0要求JDK1.4以上版本,所以要注意Oracle9装好会自动把java环境设为Oracle自带的JDK1.3.1,会导致无法运行iReport。
    ant_home 及path中ant的设置是为了可以用ant来学习Jasperreport的例子,这些例子在Jasperreport解压后的demo\ samples目录下,比如在Dos环境下进入demo\samples\jasper目录下,输入命令ant view 就可以看到该示例报表。
    classpath 中D:\iReport042\fonts;的设置是确保iReport里字体设置的时候能选择一些外部字体,比如要让PDF显示黑体,那么把 windows下的simhei.ttf拷到D:\iReport042\fonts下,在iReport中如下设置:pdffontname为外部字 体、truetypefont 为simhei.ttf、 编码为unicode with horizontal writing,这样就能使用黑体了
    E:\Project\EssV6\webapps\WEB-INF\classes,classpath里的这是设置,是让报表里一些数据要经过特殊处理,可以用工程里的函数。

    这些设置完成后,到dos环境下的iReport目录下,运行iReport.bat,dos环境下的好处是如果iReport运行失败可以看到失败原因,然后针对性的解决。iReport可以运行后就是一个摸索使用,慢慢了解熟悉的过程了,直到你能做出像样的一些报表。这个过程可以参考上面提到的
http://www.javaresearch.org/forum/thread.jsp?column=316&thread=14374

常见问题的解决


    具体做报表的时候会碰到许多问题,关键的是我们需要分析出错提示,根据找到解决办法,比如你把报表放到你的工程下,比如运行结果提示 java.io.FileNotFoundException,那么你就需要确定你的报表编译后的文件在相应的目录;又比如提示 NoClassDefFoundError,那你就要看看是哪个包没有放到你的工程下。
    需要非常强调的是:好好看Jasperreport自带的例子,看懂那些例子,至少模仿一下,就能做出你想要的报表了。

我的报表Faq

    1.java.io.FileNotFoundException
    Jasperreport自带的webapp的例子中,用于定位.jasper报表模板文件的方法是:
      File reportFile = new File(application.getRealPath("/reports/WebappReport.jasper"));
    这个时候,如果你的web服务器是tomcat,wabapp中的文件就放在root目录下
    那么这个报表的实际位置是:D:\Tomcat41\webapps\ROOT\reports\WebappReport.jasper
    然而当你使用子报表时,情况有所不同,首先在子报表中没有 application 这个对象
    所以你不能使用 new File(application.getRealPath("/reports/WebappReport.jasper"))的方法来定位子报表。
    jasperreport支持三种方式定位文件,具体参看 JasperreportUtimateGuide.pdf
    这里说一下,如果你是用String的类型来关联子报表,并且String的值是 subreport.jasper
    那么Jasperreport会到 D:\Tomcat41\webapps\ROOT\WEB-INF\classes目录下查找是否有subreport.jasper这个文件
    知道这点就能采取各种办法了

posted on 2006-01-21 11:14 千山鸟飞绝 阅读(2039) 评论(0)  编辑  收藏 所属分类: Jasperreport

只有注册用户登录后才能发表评论。


网站导航:
 
正在阅读:



<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用链接

留言簿(35)

随笔档案

文章分类

文章档案

好友的blog

我的其他blog

老婆的Blog

搜索

  •  

积分与排名

  • 积分 - 773000
  • 排名 - 56

最新评论

阅读排行榜

评论排行榜