CSDN博客

img Explorerwen

JasperReport 学习之路

发表于2004/11/3 13:28:00  1323人阅读

 
1 首先看看

http://plateau.sicool.com/main.html上的三篇
iReport和Jasperreport整合开发报表向导(一)(二)(三)
看完理解并自己运行一下,OK,你入门了
2 去找一份TheJasperReportsUltimateGuide.1.0.pdf

看完之后你就能了解JasperReport生成的基本过程及原理,里面也回答了很多
刚接触这个报表工具会产生的疑问
3 论坛上的经验

Java研究的论坛上有很多关于JasperReport及iReport的经验及问题解答,所以
大家在提问的时候不妨多翻翻论坛上的帖子,很多你要问的问题都能找到答案,
还有很多宝贵的经验
当然说起论坛最正宗还是
https://sourceforge.net/projects/ireport/
https://sourceforge.net/projects/jasperreports/
大家可以到sourceforge.net去看看,论坛上提供搜索,也能翻到很多东西,顺便
练练你的英语
4 学习JasperReport的Samples

解压jasperreports-0.5.0-project.zip 后目录jasperreports/demo/samples
下的例子,看看这些例子是你关于这个报表工具提升能力的最好最快的方式,
我会在下面贴上各个例子的简要说明。
要运行sample下的例子,首先你要安装ant,并设置好环境变量
如ANT_HOME    值为   D:/Install/ant161
然后到dos方式下,到某一个sample的目录,比如到
jasperreports/demo/samples/alterdesign目录下
运行 ant 则会编译报表文件
运行 ant view 则会展现报表
5 比上面更好的资料是什么?

就是JasperReport的源代码,看懂源代码,JasperReport
就是在你脑子里的了,你想干什么都行了,优化代码,覆写,继承他的类,实现个性
化的功能,甚至你可以参考他的思想,升华一下,做一个你自己的报表

--------------------------------------------------------------------------------------------------------------
 
1. alterdesign

该例子演示了报表编译后,在报表展现的时候如何动态的控制其中的元素
比如让某一个矩形变色或其他
2. antcompile
 
演示如何让 ant 来编译
3. chart
 
演示了如何在报表中添加图像,JasperReport是用Scriptlet的方式
往报表中添加图像,而Scriptlet是调用也是开源的jfreechart的Api来
生成图形,去jfreechart看一下,该工具能的图形生成能力也很强
4. datasource
 
演示了如何在报表中使用各种数据源,能够使用beanarray
beancollection,也可以用自定义的数据源,只要继承了JRDataSource的
两个接口,这个能给用户提供非常大的灵活性,报表的数据不用局限于一
条Sql语句,也可以使用存储过程,对生成报表中的数据也可以排序,二
次检索,等等
5. fonts
 
各种字体的演示
6. horizontal
 
演示了水平分栏的报表,演示报表中分了三栏,其中还用到了
textFieldExpression,就像if语句的效果来选择输出的内容
7. hyperlink
 
演示了各种样式的链接
8. images 

演示了如何在报表中加入图像以及图像的显示方式
9. jasper
 
演示了分组分栏的报表,演示中用了2次group
10. jcharts 

演示了调用另一个开源的API jcharts来往报表中加入分析图形,原理同
上chart,如果jfreechart都还不能满足你分析图形的要求,那到jcharts
里找找看吧,说不定有
11. landscape
 
演示横向的报表
12. nopagebreak
 
演示比如在IE中不分页的方式打印出报表的内容,通过这个演示也可以
了解报表输出如何配置参数
13. noreport 

演示了如何直接通过java程序生成JasperPrint对象来输出
14. noxmldesign 

演示了如何直接通过java程序生成JasperDesign对象来动态的生成报
表,根据这个例子,用户可以作出自定义选列的报表,当然比较麻烦,
而且肯定自己要补充他的API库
(JasperReport真是强大啊,呵呵) 
15. pdfencrypt
 
演示了pdf的输出方式,可以给pdf文件加密码,其实就是pdf输出方式的
参数配置,具体有那些参数可配置,去看看API吧
16. printservice

演示了如何直接打印报表
17. query 

演示了如何让查询的sql动态起来,比如你可以通过一个Jsp页面传
报表的sql的where条件,order条件,甚至整个sql语句
18. rotation 

演示了文字纵向显示的报表
19. scriptlet
 
演示了如何继承JRDefaultScriptlet,并加入自己的处理语句,这个功能
可是很强大的哦,看看这些接口
beforeReportInit() afterReportInit() beforePageInit()
afterPageInit() beforeColumnInit() afterColumnInit() 
beforeGroupInit(String groupName)
afterGroupInit(String groupName) 
看看这些名字就知道你能完成那些功能,比如显示一列数据后,马上跟
上该列数据的分析图形,当然你也可以加上自己的方法并在报表中调用
20. shapes 

演示了JasperReport中自带的图形,及能配置的参数
当然你也能继承或者覆写JasperReport中的Api生成你要的图形,
21. stretch 

演示了如何处理报表中数据拉伸以及带来周围的线及框的拉伸,
你能了解到虽然黑框式表格不是JasperReport中缺省的展现方式,
但在JasperReport中不难实现
22. subreport 

演示了子报表,还告诉你一个报表中可以有n个子报表,子报表中还可以
嵌套子报表
23. tableofcontents 

演示了如何生成一个有目录的,复杂的报表
24. unicode 

演示了各种 字符编码
25. webapp 

演示了如何把报表放到一个JavaWeb项目中,可以用Jsp Servlet
applet,笔者做了一个有参数页面,可以选择html pdf applet
输出方式的报表,有兴趣的 我可以在后面放上代码

------------------------------------------------------------------------------------------------------------------
下面是一些补充的内容:
概述



Jasperreport是http://www.sourceforge.net上一个优秀的开源的报表工具,其强大的功能及免费的特性得到了广大的认可和赞誉,现在的最新版本是Jasperreport0.6.1。下载地址是
https://sourceforge.net/projects/jasperreports/。
iReport是jasperreport的一个IDE的开发工具,使Jasperreport变得更易用,其最新版本是iReport0.3.2支持到Jasperreport0.5.3,和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.3.2 + Jasperreport0.5.3(没办法,iReport0.4.0还没出来,0.3.2只支持到Jasperreport0.5.3)。至于这两者的组合,我用到现在还是觉得比较顺的。
从souceforge上下载iReport-0.3.2.zip 解压后,要注意一点,把你的JDK的tools.jar拷到你解压后的iReport的lib目录下,做中文的pdf报表还需要把iTextAsian.jar拷到lib下,如果你用的是Oracle的数据库,那么你还需要把class12.jar也就是Oracle的Jdbc包拷到lib下,其他数据库也一样。
好了准备工作做好了,运行iReport.bat。如果比较顺利,应该能看到以下画面,说明
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:/iReport032/fonts;E:/Project/EssV6/webapps/WEB-INF/classes
4  ant_home   D:/Install/ant161
(关于上面参数设置的说明:
    Report0.3.2及Jasperreport0.5.3都要求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:/iReport032/fonts;的设置是确保iReport里字体设置的时候能选择一些外部字体,比如要让PDF显示黑体,那么把windows下的simhei.ttf拷到D:/iReport032/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,那你就要看看是哪个包没有放到你的工程下。以下是一些常见问题:
    Jasper报表中画的交叉线在html和xls中无法显示?
答:要想在html里面显示的话,线与线之间,线与字框之间不能有任何一点重合
所以你说的交叉线,如果是两条线直接交叉画的话,就只能由一条显示,需要分三条线段画。
    ……
    关键一点就是看出错提示,找出问题解决问题,这在一定程度上是依赖于使用者Java编程的能力。

我的报表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这个文件
    知道这点就能采取各种办法了


阅读全文
0 0

相关文章推荐

img
取 消
img