JasperReport快速入门-设计篇(1)

JasperReport快速入门--设计篇(一)

    最近在做高效平台的课程表模块,需要动态显示课表信息,最开始想到了使用报表来实现,所以决定研究一中报表。上网查了一下,信息最多的都是关于JasperReport的,所以决定学习JasperReport

 

         JasperReport是非常优秀的java开源报表工具,因为它开源免费,所以也是最常使用的报表工具。本文的定位是为JasperReport的初学者提供帮助和相互交流。

 

报表开发的生命周期

其实不管是哪类报表,开发周期大概分为两个阶段

1.报表模板设计阶段(一般都会有相应的报表设计器提供支持)

2.报表模板整合到应用程序(将应用程序查询上来的数据填充到报表模板中,然后进行最终效果的显示)

 

jasperreport系列博客分别从这两个阶段对JasperReport进行介绍,本文重点是设计阶段的入门

 

ireport简介

如果大家使用百度搜索JasperReport,你会发现出现最多的就是JasperReportLiberary+iReportiReport就是JasperReport的报表设计器;JasperReportLiberary就是编程整合阶段使用的类库。

 

iReport的下载地址

http://community.jaspersoft.com/project/ireport-designer/releases

 

官方帮组文档的下载地址

http://community.jaspersoft.com/documentation?version=9036

 

ireport的主界面

JasperReport快速入门-设计篇(1)


报表模板的结构

JasperReport将报表的结构在水平方向上划分为不同的band(),所以JasperReport是带状报表(大家熟悉的水晶报表是表格报表)。如下图所以


JasperReport快速入门-设计篇(1)


每个band的功能和显示的次数都是不一样的,举例:

Title:报表标题,出现在第一页的开头

PageHeader:页头,出现在每一页的开头,如果是第一页,则出现在Title的后面

Detail:报表的内容区,会对查询上来记录进行循环显示

其它的band就不一一列举了,大家可以下载官方文档自己查看,或根据band的名字可以自己猜测


报表模板的保存格式

那么报表模板文件是以什么格式进行保存的呢?

其实报表模板的源文件是一个标准的XML文件,扩展名是.jrxml。该xml文件内部对报表的bandelement(报表元素)等的大小和位置进行了详细的描述。该XML文件最终会被iReport编译为一个字节码文件,扩展名是.jasper,类似于java类的.class文件。最终我们使用.jasper文件和应用程序进行整合,因为编译后的报表模板效率会更高。


报表文件和java文件的类比

 

源文件

字节码文件

JR报表

.jrxml

.jasper

java

.java

.class

 

    就像我们在进行java编程时的逻辑是一样的,源代码使用纯文本的.java文件进行保存,但最终使用时是编译后的.class文件

 

JR报表的源文件和编译后的文件如下图所示

JasperReport快速入门-设计篇(1)

报表中的元素

报表中的具体内容是由报表元素element来填充的。包括文本元素、图片元素、绘图元素等,如下图所示


JasperReport快速入门-设计篇(1)


其中最常用的是:Static TextText FieldTableCrosstab

 

Static Text中只能放置静态文本,也就是说在程序运行阶段不能改变,其实就是一个字符串常量,类似于我们在CS中使用的Label,经常被用来作为表格的列头

 

Text Field中可以放置动态文本,它的内容是一个表达式,根据程序传给报表的数据,计算表达式的结果,然后动态显示

 

表达式可以有以下几种

JasperReport快速入门-设计篇(1)


其中:

$F中放的是表或实体类的字段名

$V中放的是变量

$P中放的是应用程序传给报表的参数,可以用作给sql语句传参数

$P!中放的是传给sql语句的参数,不是我们常说的参数查询中的参数,而是一段子sql语句

$R中放的是国际化资源文件中的key,用来实现i18n

 

 

tableCrosstab比较复杂,放在下一篇博客讲解。


一个小例子


说了这么多了,来个demo

1.首先新建一个空白报表

JasperReport快速入门-设计篇(1)


下一步

JasperReport快速入门-设计篇(1)


空报表在ireport中显示如下

JasperReport快速入门-设计篇(1)


2.建立一个数据源


JasperReport快速入门-设计篇(1)


JasperReport快速入门-设计篇(1)


JasperReport快速入门-设计篇(1)


JasperReport快速入门-设计篇(1)


JasperReport快速入门-设计篇(1)


点击save创建数据源成功


JasperReport快速入门-设计篇(1)


3.以新建的数据源为基础,创建查询sql语句,并选择要显示的字段


JasperReport快速入门-设计篇(1)


JasperReport快速入门-设计篇(1)


点击OK,创建查询语句和字段成功


JasperReport快速入门-设计篇(1)


4.利用新建的数据源填充报表


JasperReport快速入门-设计篇(1)


点击预览按钮,出现如下效果

JasperReport快速入门-设计篇(1)

这就是一个最简单的例子,可以快速理解jasperreport带状布局的原理

 

后续文章会继续深入讲解jasperreport,希望大家关注。


8楼kanglix1an10小时前
图文并茂啊
7楼cjr15233661143昨天 23:59
好详细的教程
6楼wlccomeon昨天 23:28
很详细的教程,学习了!
5楼lishehe昨天 23:12
好东东啊,学习啦,如果课表和google日历一样的效果就好了
4楼zs15932616453昨天 21:21
非常不错的教程,学习了!
3楼tang_huan_11昨天 21:07
很详细的教程,学习了
2楼zuozuo1245昨天 19:52
要学习的东西还有好多啊
1楼gwblue昨天 18:04
很详细学习了!