JasperReport快速入门--设计篇(一)
最近在做高效平台的课程表模块,需要动态显示课表信息,最开始想到了使用报表来实现,所以决定研究一中报表。上网查了一下,信息最多的都是关于JasperReport的,所以决定学习JasperReport。
JasperReport是非常优秀的java开源报表工具,因为它开源免费,所以也是最常使用的报表工具。本文的定位是为JasperReport的初学者提供帮助和相互交流。
报表开发的生命周期
其实不管是哪类报表,开发周期大概分为两个阶段
1.报表模板设计阶段(一般都会有相应的报表设计器提供支持)
2.报表模板整合到应用程序(将应用程序查询上来的数据填充到报表模板中,然后进行最终效果的显示)
jasperreport系列博客分别从这两个阶段对JasperReport进行介绍,本文重点是设计阶段的入门
模板设计
如果大家使用百度搜索JasperReport,你会发现出现最多的就是JasperReportLiberary+iReport。iReport就是JasperReport的报表设计器;JasperReportLiberary就是编程整合阶段使用的类库。
iReport的下载地址
http://community.jaspersoft.com/project/ireport-designer/releases
官方帮组文档的下载地址
http://community.jaspersoft.com/documentation?version=9036
ireport的主界面
JasperReport将报表的结构在水平方向上划分为不同的band(带),所以JasperReport是带状报表(大家熟悉的水晶报表是表格报表)。如下图所以
每个band的功能和显示的次数都是不一样的,举例:
Title:报表标题,出现在第一页的开头
PageHeader:页头,出现在每一页的开头,如果是第一页,则出现在Title的后面
Detail:报表的内容区,会对查询上来记录进行循环显示
其它的band就不一一列举了,大家可以下载官方文档自己查看,或根据band的名字可以自己猜测
那么报表模板文件是以什么格式进行保存的呢?
其实报表模板的源文件是一个标准的XML文件,扩展名是.jrxml。该xml文件内部对报表的band和element(报表元素)等的大小和位置进行了详细的描述。该XML文件最终会被iReport编译为一个字节码文件,扩展名是.jasper,类似于java类的.class文件。最终我们使用.jasper文件和应用程序进行整合,因为编译后的报表模板效率会更高。
报表文件和java文件的类比
|
源文件 |
字节码文件 |
JR报表 |
.jrxml |
.jasper |
java类 |
.java |
.class |
就像我们在进行java编程时的逻辑是一样的,源代码使用纯文本的.java文件进行保存,但最终使用时是编译后的.class文件
JR报表的源文件和编译后的文件如下图所示
报表中的具体内容是由报表元素element,来填充的。包括文本元素、图片元素、绘图元素等,如下图所示
其中最常用的是:Static Text、Text Field、Table、Crosstab
Static Text中只能放置静态文本,也就是说在程序运行阶段不能改变,其实就是一个字符串常量,类似于我们在CS中使用的Label,经常被用来作为表格的列头
Text Field中可以放置动态文本,它的内容是一个表达式,根据程序传给报表的数据,计算表达式的结果,然后动态显示
表达式可以有以下几种
其中:
$F中放的是表或实体类的字段名
$V中放的是变量
$P中放的是应用程序传给报表的参数,可以用作给sql语句传参数
$P!中放的是传给sql语句的参数,不是我们常说的参数查询中的参数,而是一段子sql语句
$R中放的是国际化资源文件中的key,用来实现i18n
table和Crosstab比较复杂,放在下一篇博客讲解。
一个小例子
说了这么多了,来个demo吧
1.首先新建一个空白报表
下一步
空报表在ireport中显示如下
2.建立一个数据源
点击save创建数据源成功
3.以新建的数据源为基础,创建查询sql语句,并选择要显示的字段
点击OK,创建查询语句和字段成功
4.利用新建的数据源填充报表
点击预览按钮,出现如下效果
这就是一个最简单的例子,可以快速理解jasperreport带状布局的原理
后续文章会继续深入讲解jasperreport,希望大家关注。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。