使用iReport制作报表的详细过程(Windows环境下)

来源:互联网 发布:京瓷复印机网络扫描 编辑:程序博客网 时间:2024/06/05 17:44

 发布日期:2007-1-17 11:15:00 发布者:[IT电子教育门户]   评论:[0]  浏览:6581

1、在网络上可以搜索到很多使用iReport和Jasperreport配合实现各种报表任务的文章,但是我觉得很少有一篇(几乎没有)做一个比较详细的
介绍如何使用iReport制作报表的全过程,我所看过的文章的基本思想是覆盖面广,很多内容都是提及即过,并不是开发人员都有时间为每个
实践花费时间自己实现,如果能有更详细的资料,那岂不是一件乐事。出于这个念头促使我写这篇文章,希望能对那些使用iReport和Jasperreport
朋友有所帮助,特别是需要亲身去实现报表的朋友,希望能给你们带来一点帮助。本文不是对iReport的每个细节进行介绍,关于iReport的
每个细节可以参考iReport网站的资料,但是可能得花费一些费用。一般用户没有必要付出这些费用,因为我们关心的是如何制作我们需要的
报表,而不是去扩展iReport,比如制作iReport的插件。

 

2、准备
2.1、下载JDK
地址:http://www.sun.com,选择1.3以上版本(建议1.4.2以上版本),安装JDK,默认安装即可;如果你的系统已经有安装过JDK或是有JRE即
可省略这一步骤,验证JDK或是JRE是否可以默认运行,在命令行(CMD)打入X:>java 如果出现:Usage:java………………………..开头的
一堆信息既是通过验证。否则必须进行配置,配置信息如下,在windows的环境变量设置:

path:在最后面加入“;java的安装目录”

JAVA_HOME :“java的安装目录”

CLASSPATH:“java的安装目录/bin”
重新验证JDK或是JRE是否可以在CMD任何位置运行

2.2、下载iReport
地址:http://ireport.sourceforge.net/,选择0.3.2版本(发稿之前为止建议使用的版本)解压iReport在任意目录,解压后的文件里面有
一个iReport.bat,通过双击,过大约30秒钟如果可以弹出iReport的主窗体即表明你的系统已经可以运行iReport了,如果不能弹出主窗体,
一般是第一步骤错误,或是没有完成。

2.3、准备数据库
iReport支持绝大部分数据库,只要该数据库能提供JDBC驱动器。本文提供MySql数据库作为例子,但是文章最后会提到如何配置Oracle的支持
。关于数据库的安装和建立表不属于本文的范围,请参考其他资料。本文假设已经安装了MySql和在MySql已经有一些表,并且确定表中已经有
数据了。

*【特别提示】MySql的版本要求与iReport文件夹下的Lib目录的使用MySql驱动程序兼容,笔者建议到 http://dev.mysql.com/downloads/ 
下载最新版本mysql的驱动器,这样就不会应为JDBC驱动器的问题而当心数据库的支持问题。

2.4、启动MySql服务
确定Mysql使用的的字符集是重要的问题,特别是对需要中文报表的朋友,应该特别注意这个问题。

2.5、确定商务逻辑
也就是希望完成什么样的报表任务。需要实现的报表的详细描述,这是实现报表的业务条件,否则所有的任务绝大部分没有意义。
本文使用一个Bug记录表为例,本文的例子是制作一个根据项目和项目中的模块分组的Bug量统计。


3、开始配置基本信息
3.1、配置界面使用的语言和报表输出路径
第一次进入系统是英文环境,可以通过【Tools】-【Options】开启配置iReport系统的基本信息对话框。在“Language”选项里面
选择你需要的界面语言,比如“中文-中国”。点击【Apply】按钮,系统既把整个界面中文化。

在配置iReport系统的基本信息对话框中选择【编译】Label,之后决定你的报表输出路径,可以把“编译在报表数据文件夹”选择打勾
,这样报表的jrxml文件和jasper文件就放置同一文件夹。(在新建报表时会要求你把jrxml文件保存到指定的文件夹)

【Options】选项中的一部分参数修改不能通过【Apply】按钮直接起作用,比如“Look&Feel”,必须重新启动iReport才能起作用。
不知道是不是iReport的Bug?!最后【存档】。

3.2、配置MySql的数据库连接
这就是报表与数据库的接口。可以通过【资料来源】-【连接/资料来源】开启配置列表对话框,iReport会记录以前使用的所有连接,
除非你手工删除这些连接,否则所有的连接都会存在连接/资料来源配置列表对话框中,不管是否确实可用。

点击【New】进入配置新连接界面,如图:

 

 

填写JDBC连接需要的信息,iReport支持多种数据源连接,如图:

本文只是介绍DataBase JDBC Connection连接方式,这也是最常用的方式,特别是在嵌入式报表应用。所有的信息填写并测试通过之后,
最后就是保存信息。回到配置列表对话框,关闭对话框,完成MySql数据库JDBC连接配置。


3.3、新建一个空报表的基本配置
单击工具栏的第一个工具“New Report”,新建一个报表,输入报表名称和定义报表的一些参数,比如名称输入BugsRpt(例子是做一个项目的
Bug量统计报表),单击【More….】选择标签,填写或是选择XML编码,这是关系到你的XML支持的字符集的选择,请根据需要选择,
比如需要你的XML文件支持中文,那么可以输入GB2312或是GBK,之后点击【OK】按钮,进入报表的设计界面。

*【特别提示】请在开始任何工作之前保存报表,这时iReport提示保存报表的位置,选择合适的位置之后输入BugsRpt作为名称。

3.4、定义报表可能需要的字体类型及其属性
一个报表的内容五花八门,有表头、栏位名、数据、其他变量信息等等,如果这些信息都是一致的字体和属性(比如颜色),
那么整个报表就死气沉沉,显得很粗糙了。我们可以在为报表添加每个元素时定义元素的属性,但是那是一个多么费时的工作,
如果能预先定义一些属性的组合,之后在创建每个元素时只需选择这些组合的其中一个即可,省事又快速。

单击【预览】-【报表字体】开启自定义组合对话框。单击【New】进入定义详细对话框,如图:按照图中的顺序填写信息和步骤,
依次定义“表头”、“组”、“列”、“列内容”、“统计计算”、“其他”等6中字体组合。注意PDF内嵌字体的选择,
如果你需要报表时以PDF文件格式提供,那么对此需要作出选择。

 


4、理解几个重要的概念
4.1、iReport的输出格式
iReport的预览输出格式可以支持以下几种:

PDF、HTML、CSV、JAVA2D、Excel、纯文字、JRViewer,其中最常用的是PDF、JRViewer。本文以JRViewer为例子。JRViewer是直接以C/S方式
作为报表的输出格式,在JFrame框架下输出。Jasperreport提供默认的JRViewer输出类。

4.2、报表的动态对象变量、参数、字段
在使用iReport的过程中会碰到很多与变量(Variables)、参数(Parameters)、字段(Fields)这些有关的内容,我们要介绍这些对象的
使用和意义:

・字段(Fields):是数据库抽取出来的,希望在报表中出现的数据库内容。比如一个ID的所有值。$F{ filedsName }

・参数(Parameters):这是你的应用需要提供给报表的入口,比如你希望在报表被解释的时候提供Where语句的条件值,
那么就可以使用参数(Parameters)。$P{ parameterName }

・变量(Variables):这是报表中一些逻辑运算的表现,比如统计值。$V{ variablesName }

每种对象的定义格式如每个对象的后面说明,比如定义一个变量(Variables),那么表达式就写成$V{ variablesName },
报表中出现的就是这个变量的名称。后文会详细的介绍使用方法。

4.3、编译、静态运行、动态运行
Jasperreport运行时需要的就是一个jasper后缀的文件,编译过程其实就是把jrxml后缀的文件生成jasper后缀的文件。
(可以参考Jasperreport的运行原理)

静态运行和动态运行是相对的,后者带数据源运行,比如带数据库运行。前者就是静态文本运行,和数据源无关,
如果报表中出现和数据源有关的对象,则以null显示。

4.4、报表结构
一个报表的结构大致是几个部分:title、pageHeader、columnHeader、detial、columnFooter、pageFooter、summary、
groupHeader、groupfooter。

・Title:每个报表一般会有一个名字,比如×××销售报表,title就是搁置这个名称的最好地方了,当然你也可以根据需要搁置在
合适的地方。

・pageHeader:报表的一些公共要素,比如页码、创建时间、创建人等信息放置在这里是比较好的选择。

・columnHeader:无可非议的这里是放置列的名称,记住不是列数据。

・Detial:放置需要循环的数据,比如销售记录数据。

・columnFooter:放置列级别的统计计算值或是列的说明。

・pageFooter:放置页级别的统计值或是页的说明。

・Summary:可能需要对几页(你的报表可能有几个页组成)的统计值。比如50个销售记录共占用了3页,
那么放置这些统计记录的统计值最好的地方就是summary。

・groupHeader:每个表的内容可能需要根据某个属性进行划分显示内容和计算内容,
比如希望以月份为单位每组分开显示销售记录,那么就可以定义一个组(组的定义参考后文),groupHeader就是放置组说明或是组标志最好
的地方。

・Groupfooter:放置组的统计或是说明

5、向表添加对象
5.1、添加静态对象
可以通过工具栏的工具添加静态对象,比如文本,点击【T】,之后在报表的空白处单击,如此即可把静态对象添加到报表,然后拖动对象的
边框,使它的大小合适,双击对象弹出对象的属性配置对话框,切换到【Font】Label,在“Report font”的ComBox选择“表头”字体,
(表头字体是前文提供的自定义属性组合),再切换到【Static Text】Label,修改表头的名字,比如“Bug统计报表”或是
“销售记录统计表”等等与业务有关的内容。添加图片,请点击【Image Tool】,之后的操作与Text类似。其他静态对象操作步骤类似。

5.2、使用连接
还记得前文提供的(3.2节)配置MySql数据库连接吗?这里我们将要使用前文配置的连接了。选择菜单【建立】-【使用动态连接】
开启可选的动态连接,选择任何一个你需要的连接最后【OK】,保存报表,这样你的报表就使用了这个连接了。

*【特别提示】此连接必须与以后应用程序使用的连接一致。


5.3、创建SQL查询语句
SQL语句是对任何RDBMS起作用的语言,外部用户需要使用这些语言管理维护数据库中的数据,同样的,iReport也是需要这么做,
我们需要提供查询数据库的语言-SQL语句,这样,iReport即可通过此SQL语句获取数据,之后组织到报表中并显示出来,以满足用户的需要
为目的。

原创粉丝点击