IReport动态列
- 格式:docx
- 大小:768.25 KB
- 文档页数:9
交叉报表一、工具
Ireport 4.5
二、制作过程
1、新建一个文件
图2-1 2、配置数据源
图2-2
3、在Summary中添加一个Crosstab组件(如图)注意Crosstab只能在Summary中添加
图2-3
3、设置数据源为主表数据,然后下一步
图2-4
4、设置行显示字段,然后下一步。
图2-5 5、设置行显示字段
图2-6
其中行列显示字段可以根据自己需求设置Group2或者Group3等。
6、设置表格主体数据,(这里只能添加一个字段,如需添加更多数
据请在交叉列表创建完成之后,在ReportInspector中找到交叉报表的measures,然后右键点击添加)
图2-8
图2-9
7、设置交叉列表样式
图2-10
8、对主体交叉报表进行设计(和主表一样)。
设计图见图2-11,预
览效果见图2-12。
图2-11
图2-12
表中数据设计详见第6点。
9、交叉报表的排序
在ireport4.5中,交叉报表的排序默认为按首字母排序,如图2-12我们可以看到月份是排序并不是顺序的。
这是我们可以在SQL语句上动些手脚,在查询的结果给它的第一位加上字母ABC…如图2-13
图2-13
这样预览结果就变成了图2-14
图2-14
可以看到其实这也不是我们想要的结果,然后我们可以点击月份进行字段展现控制。
如图2-15
图2-15
然后进入Text file Expression设置,如图2-16
图2-16 预览结果如图2-17
图2-17 10、交叉报表排序(2)
元素(row / column groups)默认是按照ASCII码排序,除此之外它还有一个Comparator exp。
(要求是parator的实现类),
步骤1、可以通过实现parator 接口,自己写个比较类:
package com.junefsh.utils;
import parator;
public class JsReportComparator implements Comparator<Object> { public int compare(Object o1, Object o2) {
}
}
其中注意的是compare()方法需要根据自己的需求实现,该方法主要比较的是row/column groups 中的bucket expression 。
步骤2:在我们建的模板中导入新建的类,新添加一个参数,然后在row / column groups 属性Comparator exp.引用我们添加的参数:$P{myOrder}
步骤3:我们要把JsReportComparator 类加载到项目中,以便调试,把该文件打包成jar,在iReport IDE 中"工具"-》“选项”-》"iReport"->"classpath" 将,jar添加,此后便可调试看效果了。