内部技术文档业务层应用技术----- PDF报表技术PDF报表技术●介绍JasperReports包结构,路径等。
●介绍iReport●总的开发流程● 1.1 iReport使用说明● 1.2 简单的报表制作● 1.3 动态报表制作1.3.1 给报表传递参数1.3.2 带查询的报表制作1.3.3 动态设置查询条件的查询报表制作● 1.4 如何插入图片1.4.1显示本地磁盘上的图片1.4.2显示数据库中的图片● 1.5 JasperReports和struts2的结合1.5.1 安装JasperReports插件1.5.2 配置生成JasperReports报表的struts.xml配置文件1.5.3 生成JasperReports报表●附注1.iReport中的分页控制:2.iReport中变量的介绍3.工作区介绍4.分栏的设置在企业级的web应用中,必须面临大量的报表问题,即将数据库中的数据形成报表并进行打印,在传统的开发中我们一般只能使用HTML页面生成报表。
这样不仅开发人员花大量时间来设计HTML报表,而且不支持导出别的格式的报表。
由于这种局限的存在,不能满足用户的需要,而JasperReports项目的出现解决了企业开发的这种困境。
JasperReports是一个强大的,灵活的报表生成工具,能够生成PDF,HTML,XML格式的报表。
这个工具是开源的,我们可以免费的使用她,并且完全使用java写成,可以用在各种java应用程序中,包括java C/S应用、Web中应用生成报表。
(她的文档是收费的)当然了我们要生成PDF报表肯定使用JasperReports组件了。
JasperReports的开发是由一份XML格式的报表的文件开始的,设计好这个XML文件后,利用JasperReports的API进行编译,填充数据,导出或者浏览,这样可以生成多种格式的报表的文件。
开发者只需提供一个XML格式的报表设计文件,而其他的细节以及底层的数据处理等对开发者来说是完全透明的。
JasperReports的使用:首先,我们登录JasperReports的官方网站下载JasperReports的最新版本jasperreports-3.0.0。
JasperReports组件的文件结构:build:存放的是JasperReports项目编译后生成的*.class文件。
demo:存放的是JasperReports项目的演示文件,我们可以参考该路径下的演示来学习JasperReports框架的使用。
dist:存放的是JasperReports项目的二进制JAR文件,还包括了JasperReports项目的API文档。
docs:存放的是两份XML文档,没有什么用。
lib:存放的是JasperReports项目编译和运行所需的JAR文件。
src:存放的是JasperReports项目的所有源文件。
为了在我们的项目中使用JasperReports项目,我们应该将dist路径下的jasperreports-3.0.0.jar文件复制到应用的CLASSPA TH路径下。
如果是web应用,将改文件复制到Web应用的WEB-INF/lib路径下。
不过JasperReports框架生成其他格式的文档还依赖另外一些开源项目,如果生成PDF文档依赖iText项目,将JasperReports的lib下的itext-1.3.1.jar文件复制到系统的CLASSPA TH路径下;如果要生成Excel文件,则应将lib下的poi-3.0.1-FINAL-20070705.jar文件复制到系统的CLASSPA TH路径下。
光有这些还不够,如果你的CLASSPA TH路径下没有apache的commons组件的话,我们还得将commons组件的部分jar包放到我们的CLASSPA TH中有:commons-collections-2.1.jar,commons-logging-1.0.2.jar,commons-digester-1.7.jar, Commons-beanutils-1.7.jar.这些jar包在我们下载的JasperReports包中的lib路径下。
此外还要一个eclipse提供的编译的jar包,在我们下载的JasperReports包中lib路径下有这个编译的jar包,jdt-compiler-3.1.1.jar。
我在简单说一下apache下的这个commons组件:commons组件就是一个开源的工具类的组合,集中解决了java 的涉及的各个方面。
在某些方面比java se 提供的功能都强大。
它的存在目的是创建和维护独立于其他框架和产品的组件。
当然了这些包我们也可以单独使用,就想java Jdk一样作为我们项目的一部分,这样我们可以大大的缩短开发周期。
总之:我们应该在CLASSPA TH中必须要放8个jar包:commons的四个:(commons-collections,commons-logging,commons-beanutils,commons-digester),eclipse编译包(jdt-compiler),JasperReports包(jasperReports),生成pdf的包(iTex),我们肯定会打印中文,则还需要中文支持的包(iTextAsian包)。
在itex的官方站点下载。
至此,所有的配置工作全部完成。
当我们成功的做了上述的工作,那么我们就可以在应用中使用JasperReports框架了。
让我们一块体验她的魅力吧!不过,在开发报表之前还得先说一下iReport工具:我们要想开发一个报表必须先定义一个报表设计文件即一个特殊的XML文件,这份XML文件中包含了大量的JasperReports标签,我们没有必要在去了解JasperReports标签的详细含义。
设计XML此文件是相当的繁琐的。
即使设计一个简单的静态报表也要写上好多的代码,而且非常容易出错。
好在有了iReport工具,iReport也是开源组织 中的一款免费软件,主要作用就是用可视化的方式设计生成JasperReport 所使用的报表格式文件,因为JasperReport 本身并未提供很好的可视化报表设计工具,iReport 的出现正好弥补了这个缺陷。
因此现在我们就不用在亲自去设计那繁琐的又必须使用的XML文件了,使用iReport工具以所见即所得的方式来生成,这样大大的提高了工作效率。
JasperReports和iReport结合起来使用,你会深深的被她们提供的功能所折服的!!我们首先要在下载iReport的最新版本。
(iReport-3.0.0.zip)。
在压缩包解压后有一个iReport.exe 文件,双击即可运行iReport。
在详细介绍之前,先总体的说一下开发报表的流程,让大家在整体上有个认识:1.开发人员开发报表设计文件,也就是定义一个*.jrxml文件(就是最开始的那个XML文件)。
2.使用JasperReports提供API中的JasperCompileManager类编译*.jrxml文件,编译后生成一个*.jasper文件。
3.使用JasperReports提供API中的JasperFillManager类填充编译后的*.jasper文件,填充后生成一个*.jrprint文件。
4.使用导出管理器(JasperExportManager)或者各种格式的文件导出器(JRXxxExporter)将*.jrprit文件导出成各种格式的报表文件。
也可以使用JRV iewer工具类来直接浏览报表。
开发流程图:1.1 iReport使用说明首先我们先开发一个静态的报表为例,介绍如何利用JasperReports+iReport开发JasperReports报表。
iReport的应用:这是个既简单有复杂的事情,说他简单是因为这里没什么任何技术含量,完全类此word的操作,说起复杂是因为需要这些报表组合的具有一定的美感。
1.1.1双击iReport.exe文件,即可打开iReport主页面:我们一睹她的模样吧!1.单击菜单中的’档案’菜单,然后在选择“开启新档”菜单项,将出现下图:我们可以更改报表的名称,页边距的设置以及选择纸张的大小和类型。
除次之外比较重要的一点就是:如果报表文件需要使用中文字符,我们应单击i18n选项卡,在该选项卡的“XML编码”输入框中输入GBK。
如图:2.我们大家都熟悉word了,word中的分栏给我们带来极大的方便,同样在pdf报表中分栏也是必不可少的,我们也可以通过设置对pdf报表进行任意次的分栏。
上两个图的“字段数”选项卡,我们都看见了吧!单击该选项卡得到下图:字段数输入框的数就代表了所分的栏数,默认是1,也就是不分栏。
如果要分两栏我们把他改成2即可。
1.1.2主页面的各个工作区介绍:1.设置文本格式的工具按钮:2.文本排列工具按钮:3.资源管理器:4.控制台:5.中间空白的一大部分则是报表设计区了。
6.最后介绍我们常用的,也是最重要的一个:我们经常要用到的就是“T”,“F”这两个按钮了。
“T”添加静态文本。
“F”添加文本字段。
(动态)。
其他按钮我们可以尝试的试试它们的功能。
1.2简单报表制作(一)、首先我们要做重要一步,打印出中文,这不是必不可少的,那就是为当前报表建一个风格(Style),并设置为当前默认风格。
步骤:1. 单击菜单中的’格式’菜单,然后在选择“Style”菜单项,将出现下图:2.单击“New”按钮:出现Add/Modify Styles对话框:3.Add/Modify Styles对话框设置:3.1设置Styles标签:在Styles name中输入一个名字,名字任意,并设置成默认的风格:设置后如图:3.2设置Text Properties标签:拖动滑动块,在下面可以看到Text Propertise标签:接着点击Font选项后的按钮,将弹出如下对话框:在这个对话框中,我们将对打印中文问题进行设置,其中主要设置有两项:PDF Font Name 设置为:STSong-LightPDF Embedded 设置为:UniGB-UCS2-H (Chinese Simplified)设置后如图:然后点击OK即可。
打印中文的PDF报表设置完成。
至此,总结一下,PDF中要想打印中文有三个地方要设置:第一,CLASSPATH中必须增加中文支持包iT extAsian。
第二,在i18n标签中XML编码必须是GBK(要手动输入)。
第三,要设置PDF Font Name和PDF Embedded。
(二)、通过“T”添加静态文本:来制作一个简单的报表:单击“T”按钮,然后在设计区进行拖拽:插入静态文本后的报表如图:然后保存,保存后便可得到一个*.jrxml文件。