日期:2014-05-18  浏览次数:20681 次

整理一下ireport+jasperreports报表,对初学的朋友希望有所帮助······
这个是以前整理的哦···
 一直发在偶的blog里面····
  转到csdn来,希望对需要的朋友有用(也不知道现在的版本是什么了,呵呵)····
  :P

1、先介绍一下ireport及asperreports吧····
Jasperreport是一个报表制作程序,用户需要按照它制定的规则编写一个XML文件,
然后得到用户需要输出的格式文件。它支持输出的文件格式包括PDF,HTML,XML,XLS,CVS等等。
而iReport就是一个制作Jasperreport的XML文件的可视化开发工具。

2、下载ireport和jasperreports···
jasperreport下载地址:(我下的是jasperreports-0.6.8)http://jasperreports.sourceforge.net
ireport下载地址:(我下的是iReport0.5.0)http://ireport.sourceforge.net

3、下载了ireport将它解压缩以后运行iReport.bat文件,过大约30秒如果能出现ireport的主窗体
则表明你的系统已经可以运行ireport了,但是我的不行,所以我编辑目录下的iReport.bat文件,
代码如下····
@echo off

set JAVA_HOME=C:\j2sdk1.4.0_03
set ANT_HOME=C:\ant
set IREPORT_HOME=C:\Documenti\progetti\iReport\iReport2\

rem %ANT_HOME%\bin\ant javadocs
%ANT_HOME%\bin\ant iReport

----------------
这里是采用ant来运行的,所以还需要下载一个ant···
如果你没有安装ant的话也可以找到noAnt文件夹下的startup.bat文件即可运行···

4、数据库···
我是用的mysql数据库,之前配置数据库的JDBC驱动器一直不成功原因是我下的mysql的jdbc驱动太老了,
和ireport的不兼容····
建议到http://dev.mysql.com/downloads/下载最新版本···

5、配置数据库连接····
这个是报表与数据库的接口,通过<资料来源>--<连接/资料来源>开启配置对话框,ireport会记录以前使用的
所有连接,除非你手工删除这些连接,否则连接将一直存在···
配置新连接界面如下:


提示:如果你需要报表提供中文内容显示可以在JDBC URL下工夫,比如输入:
jdbc:mysql://localhost/xiaoya?user=root&password=root&useUnicode=true&characterEncoding=GB2312

6、中文问题····
解决pdf中文问题需要下载itextasian.jar和itext-1.3.jar,将其下载后放到ireport/lib下即可··
要在这里提一下的是之前我也下载了这两个东东放到指定的位置了可还是乱码,后来还是解决了··
解决方法:
在iReport中新建一个TextField的时候会自动把pdf字体设为CP1252,这个是需要修改的,
否则pdf输出会报错说找不到字体,我就被这个捆饶了很久,修改如图:


7、理解几个重要的概念····
a、iReport的输出格式····
  iReport的预览输出格式可以支持以下几种:
  PDF、HTML、CSV、JAVA2D、Excel、纯文字、JRViewer,其中最常用的是PDF、JRViewer。
  本文以JRViewer为例子。JRViewer是直接以C/S方式作为报表的输出格式,在JFrame框架下输出。Jasperreport提供默认的JRViewer输出类。
b、报表的动态对象变量、参数、字段····
  在使用iReport的过程中会碰到很多与变量(Variables)、参数(Parameters)、字段(Fields)这些有关的内容,我们要介绍这些对象的使用和意义:
  ·字段(Fields):是数据库抽取出来的,希望在报表中出现的数据库内容。
  比如一个ID的所有值。$F{ filedsName }
  ·参数(Parameters):这是你的应用需要提供给报表的入口,
  比如你希望在报表被解释的时候提供Where语句的条件值,
  那么就可以使用参数(Parameters)。$P{ parameterName }
  ·变量(Variables):这是报表中一些逻辑运算的表现,比如统计值。$V{ variablesName }
  每种对象的定义格式如每个对象的后面说明,比如定义一个变量(Variables),
  那么表达式就写成$V{ variablesName },报表中出现的就是这个变量的名称。
c、编译、静态运行、动态运行···
  Jasperreport运行时需要的就是一个jasper后缀的文件,编译过程其实就是把jrxml后缀的文件生成jasper后缀的文件。(可以参考Jasperreport的运行原理) 静态运行和动态运行是相对的,后者带数据源运行,比如带数据库运行。前者就是静态文本运行,和数据源无关,如果报表中出现和数据源有关的对象,则以null显示。
d、报表的结构···
  一个报表的结构大致是几个部分:title、pageHeader、columnHeader、detial、columnFooter、pageFooter、summary、groupHeader、groupfooter。
  ·Title:每个报表一般会有一个名字,比如×××销售报表,title就是搁置这个名称的最好地方了,当然你也可以根据需要搁置在合适的地方。
  ·pageHeader:报表的一些公共要素,比如页码、创建时间、创建人等信息放置在这里是比较好的选择。
  ·columnHeader:无可非议的这里是放置列的名称,记住不是列数据。
  ·Detial:放置需要循环的数据,比如销售记录数据。
  ·columnFooter:放置列级别的统计计算值或是列的说明。
  ·pageFooter:放置页级别的统计值或是页的说明。
  ·Summary:可能需要对几页(你的报表可能有几个页组成)的统计值。比如50个销售记录共占用了3页,那么放置这些统计记录的统计值最好的地方就是summary。
  ·groupHeader:每个表的内容可能需要根据某个属性进行划分显示内容和计算内容,比如希望以月份为单位每组分开显示销售记录,那么就可以定义一个组(组的定义参考后文),groupHeader就是放置组说明或是组标志最好的地方。 
  ·Groupfooter:放置