[Jasper使用总结]iReport报表设计-整体介绍(二)

iReport的文件分为两种,一种为.jrxml 源文件(类似.java),一种为.jasper编译文件(类似.class)。我们在ireport里拖拽生成的即为.jrxml文件。而点击预览生成的即为.jasper文件。

说是.jrxml,其实也是一个XML文件,只是这个文件需要符合ireport的xsd格式,而且也可以扩展自己的标签,只是自己定义的标签就不支持拖拽了,除非自己实现它。

通过我们设计的.jrxml,我们可以将任何数据源(比如jdbc,cvs,xml,javabeans,excel等等)一系列的数据,转换为我们想要的格式,导出为HTML/EXCEL/WORD/PDF/FLASH等报表文件。

一、iReport 报表文件-基本属性


分类 属性名称 功能描述
  report name 报表名称
Page Size
  Page Width 页面宽度
  Page height 页面高度
  Orientation 报表方向,可为横式或竖式,默认为大众的竖式
Margins
  Left margin 页面左端空白,单位px,默认20px
  Right margin 页面右端空白,单位px,默认20px
  Top margin 页面顶端空白,单位px,默认20px
  Bottom margin 页面底端空白,单位px,默认20px
Columns
  Columns 报表分为几列,默认为一列。
  Column Width 每列的宽度
  Column space 列间空白
  Print order 打印方式-垂直/水平。默认垂直
More
  Scriptlet class 自定义scriptlet,可在报表生成时自定义一些行为。
  Resource bundle 报表所用资源文件,支持国际化
  When Resource Missing Type 当资源属性未找到是,值为什么? 可为null,空白,报错,element的key
  Query Text SQL查询语句,也可在DataSet中设置。
  The language for the dataset query SQL语句的类型,也可在DataSet中设置。比如普通SQL,Hibernate,MDX等
  Filter Expression 对SQL语句查询的结果,再次进行过滤,用ireport expression 编写,返回类型必须为Boolean类型
  Properties 报表所支持的一些额外属性设置
  Title on a new page 是否Title单独占用一页
  Summary on a new page 是否Summary单独占用一页
  Summary with Page Header and Footer Summary中是否显示Page Header 和 Page Footer
  Float column footer
  Ignore pagination 是否不分页,整个报表显示在一页中
  Column Direction 报表是居左还是居右显示
  When No Data
当Main DataSet记录为0时,显示什么内容?可选项为:
1.除Details Band外的所有内容
2.空白页
3.显示NoData Band (可为报表单独定义该band,用于无数据时,进行信息提示)
4.什么都不显示
  Language 该报表的expression的类型:可选项为-java,groovy,javascript
  Format Factory Class 可自定义Data 和 Number类型等的格式化方案,该类需继承自XX类
  Imports 可以引用其他包,自定义或第三方等。例如org.myself.utils
 
 
 
二、iReport 内容 - Bands ( 我们的画板 )
整个报表的内容,是由很多的Bands组成的,而我们要做的就是在这些Bands上绘制我们想要的文字,图片,图表,背景等。
其实就相当于我们的画布,只不过这个画板有点多,且每个画板的功能也不同,还有一些属性需要设置,综合配置好这些,才能画一副完整的报表图画出来~
 
    a) 每个画板都有3个属性:
Band height band的高度
Print When Expression 当表达式为TRUE时,才显示该Band
Split Type 可设置当内容超过当前Band高度时,是继续显示一部分,还是在新的一页显示完整内容。
1.Immediate 直接显示不完整信息
2.Prevent 到新的一页显示完整信息
3.Stretch 延伸当前页,显示完整信息
     b) 各个画板的功能描述 :
Band Name 功能描述
Title 报表的标题,仅显示一次,可设置为单独占一页。
需注意在这里使用variable时,不能设置其Evaluation Time 为 Now,否则为null
Page Header 每页的头部,在每页都会显示一次
Column Header 每列的头部,一般的情况下,我们将表头设置在这里。
XXX Group Header 当报表中存在Group时,才有此band。显示在每个Group的开始位置。有多少个Group显示多少次。一般将Group Name 显示在这里
Detail 数据明细,每行数据在这里显示。有多少行数据,显示多少次。
XXX Group Footer 当报表中存在Group时,才有此band。显示在每个Group的结束位置。有多少个Group显示多少次。一般将Group 汇总计算信息 显示在这里
Column Footer 每列的底部,一般的情况下,将整个数据明细汇总信息显示在这里。
Page Footer 每页的底部,在每页都会显示一次
Last Page Footer 最后一页的底部,在最后一页才显示一次。
Summary 汇总页,仅在报表最后显示一次,一般将整个报表的汇总信息显示在这里。
No Data 当报表查询记录为0时,可设置显示该Band内容。比如可设置其内容为:“当前查询无数据,如有问题请联系XXXX.”
Background 整个报表的背景,比如我们给整个报表设置一个水印效果
二、DataSet
光有画板是不行的,我们还需要颜料,那就是DataSet,也就是数据源。就有了数据,才能开始加工设计。
iReport支持多个DataSet,默认仅有一个Main Data Set。
iReport支持的查询类型也很多,普通SQL,HQL,MDX Query,Json等等。
另外还可以为JavaBean,这样业务逻辑就可以放入Java 的Service里处理了。
 
Parameters,Fields

Parameters与Fields都来自于外部。一个是外部传入的参数,一个是根据数据源生成的字段(当然也可以字的自定义Fields)
        Parameters 主要由报表外部传入,它默认已经自带了一些系统参数,例如 REPORT_PARAMETERS_MAP,REPORT_DATA_SOURCE,REPORT_MAX_COUNT,REPORT_TIME_ZONE 等。另外也可自定义自己的Parameters,比如统计时间段,组织No等业务参数。
Fields 一般由数据源查询SQL自动生成,一般不用管。它对应SQL/JavaBean中查询出个各个字段名称。
 
四、Variables
Variables类似于方法内部定义的局部变量,方便我们进行计算汇总,以及常量定义等。
        系统自带几个参数:比如当前Page Number,当前Column Number,总Report Count,总Page Count,总Column Count。通过这些自定义参数,我们可以设置一下特殊样式,比如隔行变色等。
        另外,我们还可以自定义一些Var,进行Sum,Avg,Count等计算。因内容较多,后面单独总结吧。
 
五、Elements
画板上可以画啥子东西呢?可以画静态文本,动态文本,JFreeChart图表,Flash图表,HTML5图表,Maps,交叉表,条形码等等各种Elements。甚至我也可以自定义一个组件,用来显示;还可以显示HTML代码;调用JS脚本等。
这里抱怨一下,Chart这种用的JFreeChart的图片效果的图表,是否该废弃了?样子老难看的说~
还有其Charts Pro,Maps Pro,Widgets Pro 3种Flash 报表都是基于Fusionchart实现的,而且是用的免费版Fusionchart,可选择的图表类型实在是太少了...如果能改为 FusionChart收费版,功能该多么强大。只能意淫一下了...
        在4.7以后的版本里出现了HTML5 Charts,估计也是为了弥补Flash Chart方面的不足吗?但是目前来说HTML5 Charts能支持的图表类型也是不多啊
而Spider Chart,还是用的旧的JFreeChart或其自定义实现的一个图片效果的图表,样子要多难看也多难看。(在3.7版本里,甚至都没有这个图表类型,还是自己做了一个插件实现的,效果都比它这个好看。)
好歹是收费版,你不能做的更漂亮,更炫丽,图表类型,功能选择更多一点吗?
还好有了Generic Element和HTML组件,我们可以调用JS,HTML,或Java代码实现自己的组件,但是毕竟要自己动手,而且这样出来的貌似只支持HTML导出呢。
 
 
整个报表基本上就是由这些部分组成了,我们要做的就是根据这些组件或元素,画出我们想要的效果。简要介绍总结完毕~ 又进了一小步

猜你喜欢

转载自zzc1684.iteye.com/blog/2190892