您的位置:首页 > 编程语言 > ASP

Jasperreports6.3.1+Jaspersoft studio6.3.1进行报表开发实战教程(一)

2017-03-04 10:06 741 查看


前言

最近开发项目要用到报表开发,网上一搜基本上都是运用Jasperreport进行报表开发,不仅因为Jasperreport功能强大运用Java开发,还因为该项目是使用LGPL协议开源的,故可以自由运用在私有项目上只要你不修改它的源码。现在网上搜到Jasperreport的基本都是配合ireport进行开发的,而且版本基本都是6.0以前的。 

进入Jasperreport项目的官网发现有一个软件叫Jaspersoft studio的,它的版本也是6.3.1跟Jar包版本一致,百度一下才知道IReport已经不再进行版本更新了,现在改用Jaspersoft studio进行开发了,该软件是基于Eclipse开发的,当然也是开源免费的。 

我将自己运用Jasperreport+studio进行开发的一些经验进行整理,希望对大家有用。


准备工作

到Jasperreport开发公司官网Jaspersoft community下载Jar包,最好是下载Project包,还有模板开发软件Jaspersoft studio。下载链接 


 

点击Libray和studio进行下载,点击之后会弹出让你注册或者登录的界面,可以点击右下角的NoThanks跳过直接来到下载界面,稍等片刻便会弹出下载对话框。 



下载Jasperreposrt6.3.1的Project包后解压,里面的结构如下。 



重点文件夹我都做了标识,demo是一些案例。首先来了看第一个文件夹dist,点进去之后里面放着Jasperreport6.3.1的Jar包,还有其它两个相关的包。 


 

第一个文件夹doc里面放着Jar包的Api说明,还有Jasperreport的用户指南,如果你英文好的话可以详细读读。 


 

接下来的文件build.xml是一个非常值得注意的点,由于JasperReport可以用ant工具进行构建,所以这个Project包里的案例都是默认用ant才能运行的,不了解ant的同学可以百度一下ant的教程。 

强烈建议安装一个ant构建工具,反正也不大,因为后面会用的到,而ant都是基于build.xml进行构建项目的,所以这里有个build.xml文件。当安装好ant之后,用cmd进入当前项目,可以直接在当前目录的地址栏里输入cmd,然后直接打ant命令,就会开始构建项目了。 

那这个ivy.xml又是什么呢,点开看看。
<ivy-module version="2.0">
<info organisation="net.sf.jasperreports" module="jasperreports">
<license name="GNU Lesser General Public License" url="http://jasperreports.sourceforge.net/license.html" />
<description homepage="http://jasperreports.sourceforge.net">JasperReports Library</description>
</info>
<configurations defaultconf="compile" defaultconfmapping="compile->*">
<conf name="compile" description="dependencies for compile"/>
<conf name="docs" description="dependencies for docs" extends="compile"/>
<conf name="javaflow" description="dependencies for javaflow" extends="compile"/>
<conf name="test" description="dependencies for test" extends="compile"/>
</configurations>
<dependencies>
<dependency org="antlr" name="antlr" rev="2.7.5"/>
<dependency org="com.adobe.xmp" name="xmpcore" rev="5.1.1"/>
<dependency org="com.fasterxml.jackson.core" name="jackson-annotations" rev="2.1.4"/>
<dependency org="com.fasterxml.jackson.core" name="jackson-core" rev="2.1.4"/>
<dependency org="com.fasterxml.jackson.core" name="jackson-databind" rev="2.1.4"/>
<dependency org="com.google.zxing" name="core" rev="3.2.1"/>
<dependency org="com.lowagie" name="itext" rev="2.1.7.js5"/>
<dependency org="commons-beanutils" name="commons-beanutils" rev="1.9.0"/>
<dependency org="commons-collections" name="commons-collections" rev="3.2.2"/>
<dependency org="commons-digester" name="commons-digester" rev="2.1"/>
<dependency org="commons-lang" name="commons-lang" rev="2.6"/>
<dependency org="commons-logging" name="commons-logging" rev="1.1.1"/>
<dependency org="com.ibm.icu" name="icu4j" rev="57.1"/>
<dependency org="javax.persistence" name="persistence-api" rev="1.0"/>
<dependency org="javax.servlet" name="servlet-api" rev="2.4"/>
<dependency org="jaxen" name="jaxen" rev="1.1.1"/>
<dependency org="mondrian" name="mondrian" rev="3.1.1.12687"/>
<dependency org="net.sf.barcode4j" name="barcode4j" rev="2.1"/>
<dependency org="net.sourceforge.barbecue" name="barbecue" rev="1.5-beta1"/>
<dependency org="net.sourceforge.jexcelapi" name="jxl" rev="2.6.10"/>
<dependency org="org.apache.ant" name="ant" rev="1.7.1"/>
<dependency org="org.apache.commons" name="commons-javaflow" rev="20160505"/>
<dependency org="org.apache.httpcomponents" name="httpclient" rev="4.3.4"/>
<dependency org="org.apache.httpcomponents" name="httpcore" rev="4.3.2"/>
<dependency org="org.apache.lucene" name="lucene-analyzers-common" rev="4.5.1"/>
<dependency org="org.apache.lucene" name="lucene-core" rev="4.5.1"/>
<dependency org="org.apache.lucene" name="lucene-queryparser" rev="4.5.1"/>
<dependency org="org.apache.poi" name="poi-ooxml" rev="3.10.1"/>
<dependency org="org.apache.poi" name="poi" rev="3.10.1"/>
<dependency org="org.apache.velocity" name="velocity" rev="1.7"/>
<dependency org="org.apache.xmlgraphics" name="batik-anim" rev="1.8"/>
<dependency org="org.apache.xmlgraphics" name="batik-awt-util" rev="1.8"/>
<dependency org="org.apache.xmlgraphics" name="batik-bridge" rev="1.8"/>
<dependency org="org.apache.xmlgraphics" name="batik-css" rev="1.8"/>
<dependency org="org.apache.xmlgraphics" name="batik-dom" rev="1.8"/>
<dependency org="org.apache.xmlgraphics" name="batik-gvt" rev="1.8"/>
<dependency org="org.apache.xmlgraphics" name="batik-svg-dom" rev="1.8"/>
<dependency org="org.apache.xmlgraphics" name="batik-svggen" rev="1.8"/>
<dependency org="org.apache.xmlgraphics" name="batik-util" rev="1.8"/>
<dependency org="org.beanshell" name="bsh" rev="2.0b4"/>
<dependency org="org.codehaus.castor" name="castor-core" rev="1.3.3"/>
<dependency org="org.codehaus.castor" name="castor-xml" rev="1.3.3"/>
<dependency org="org.codehaus.groovy" name="groovy-all" rev="2.4.5"/>
<dependency org="org.eclipse.jdt.core.compiler" name="ecj" rev="4.3.1"/>
<dependency org="org.hibernate" name="hibernate-core" rev="3.3.2.GA"/>
<dependency org="org.jfree" name="jcommon" rev="1.0.23"/>
<dependency org="org.jfree" name="jfreechart" rev="1.0.19"/>
<dependency org="org.mozilla" name="rhino" rev="1.7.6"/>
<dependency org="org.olap4j" name="olap4j" rev="0.9.7.309-JS-3"/>
<dependency org="org.ow2.asm" name="asm-all" rev="4.0" conf="javaflow->*"/>
<dependency org="org.springframework" name="spring-beans" rev="2.5"/>
<dependency org="org.springframework" name="spring-core" rev="2.5"/>
<dependency org="xalan" name="xalan" rev="2.7.2"/>
<dependency org="xml-apis" name="xml-apis-ext" rev="1.3.04"/>

<dependency org="xalan" name="serializer" rev="2.7.2" conf="docs->*"/>

<!--
<dependency org="com.keypoint" name="png-encoder" rev="1.5"/>
<dependency org="javax.xml.soap" name="saaj-api" rev="1.3"/>
<dependency org="org.apache.xmlgraphics" name="batik-script" rev="1.7"/>
<dependency org="org.testng" name="testng" rev="6.8.1"/>
<dependency org="log4j" name="log4j" rev="1.2.17"/>
<dependency org="net.sf.jasperreports" name="jasperreports-fonts" rev="4.0.0"/>
-->
</dependencies>
</ivy-module>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80

有没感到头晕,有没看到许多的dependency,没错这个就是依赖库的构建,当你运行ant命令后,就会从远程仓库下载所有这些Jar包。 

注意:这一步是非常重要的,如果你要用最新版的6.3.1进行开发,那么你必须得要有上面xml里面的所有包,而且版本一定要对应。否则当你导入JaserperReport Jar包到项目后,你会发现一调用方法填充模板生成PDF或者HTML就会出现各种ClassNotFount异常,像下面这个Jar类库 
<dependency org="org.apache.xmlgraphics" name="batik-bridge" rev="1.8"/>
 

它是apache基金会开发的一个图像处理类,如果你用的1.7版本或者以下的版本,那么你就会一直报下面这个错误,当初为了解决这个问题,我真是踩了很多坑,最后才发现这个类只有在1.8版本才增加进去的。
java.lang.ClassNotFoundException: org.apache.batik.bridge.FontFamilyResolver
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1358)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
1
2
3
4
1
2
3
4

ant安装时需要注意的是要在其安装目录下的lib文件夹导入ivy.jar这个包,需要自行下载,下载jar包传送门。如果没有这个ivy.jar,在运行ant命令后,会报下面的错误。 


 

当运行ant命令后,如果出现下面的画面,那么恭喜你已经开始了漫长的下载jar的过程,这个时间可能很久很久。 


 

ant构建的jar包默认放在C盘的用户文件夹下面,有个.ivy的cache文件夹,里面放的就是下载的缓存jar包了,这时可以慢慢地收集jar包了。 



当初我创建一个Java web项目时,想生成图表,报一个错导一个包,导了很多包后才发现我要导的包都写在这个ivy.xml文件里。当然如果用ant构建的话有可能会遇到网络问题,下载不了有些jar包,毕竟是外国的网站,能下多少就下多少吧,没有的再去其它地方下。我的Jar包有一些是IReport软件里的lib目录拉过来的。 

jaspersoft studio就这点不好,不知道要去哪里找到所有的工程需要用到的jar包。在软件安装目录里jaspersoftstudio\plugins,也可以找到一些类,但不是很全。要做一个报表所依赖的包相当的多,当然最后我也会把我可以运行的项目Demo提供出来供大家参考。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐