2009-03-21

用ireport+jasperreport制作报表

  所谓报表其实就是把数据按照某种方式整合起来,用适当的形式展示出来的东西。所以它的两个基本要素就是数据和表现,前者基本就是在各种实验、调查中获得的啦,后者嘛,jasperreport是一种比较方便的实现的工具,当然还有其他的。
  用jasperreport制作一个report一般有如下四个步骤:

  1. Create a template
  2. Compile the template
  3. Fill report
  4. Export report
ok,说明一下,第一步,一般用jasperreport的gui程序ireport创建一个template,这个东西其实只是一个xml文件,不过话说回来,开放式文档标准之后,还有什么不能用xml呢?只是要长的漂亮大家才爱用就是。。。
第二步,编译其实就是把上步的那个xml文件编译成一个二进制文件,这个虽然可以不编译,不过因为模板很常用所以弄一下就一次编译多次使用咯。
第三步,这个其实应该要在第一步搞定,但是实际当弄好一个模板以后只需要从这一步开始,所以放到这里,如果是第一次制作这个模板,那么有两种方法fill,第一种是在要fill的地方直接写sql语句,第二中是创建一个自己的数据源,不过这种需要extent JRDataSource这个类。
第四步,看你的需求,可以导出成pdf,html等等很多很多种。


接下来以我的ireport 3.50来练习一个报表。
新装的ireport长这样的:

既然是quick start,也非常简单,我这里直接用Database JDBC Connection
设置好你的配置,连接测试成功就ok了。
如果你是一个新数据库的话,你得先在服务器端弄好你的表。
我的长这样:
mysql> show tables;
+-------------------+
| Tables_in_ireport |
+-------------------+
| testreport |
+-------------------+
1 row in set (0.00 sec)

mysql> describe testreport;
+--------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| title | varchar(40) | YES | | NULL | |
| author | varchar(30) | YES | | NULL | |
| isbn | varchar(30) | YES | | NULL | |
| pic | varchar(80) | YES | | NULL | |
| perchasedate | date | YES | | NULL | |
+--------------+-------------+------+-----+---------+-------+

然后用创建新report的quick start。
选定好以后那个数据库查询(Query)只需要select * from 你的表 即可,这里主要是ireport获得表字段。


至于之后的group是干什么的呢,一张图就说明问题了,我这里以title 和 perchasedate为两个group的报表效果:

我这里录入了两条数据,其实就是图书的一些资料。当然这个报表的模板是默认的,相当的丑。

不过新版本有一个好的地方就是,早期的各种问题,诸如中文字体,和其他很多乱七八糟的问题都已经被解决了。

没有评论: