java实现交叉报表_iReport 交叉报表(crosstable)排序

在使用iReport_3.5.2工具设计交叉报表,发现从数据库中查询出来的数据的排列顺序,在iReport报表工具中会发生变化,引文该工具在默认情况下的排列顺序是:Ascending/Descending;

如果我去出的数据是string类型,那么会有如下小问题(以列组(column groups)为例):

查询结果:

项目1 项目2 项目3 ...项目10 项目11...项目20..

而工具默认导出顺序(asscending):

项目1 项目11... 项目2 项目20..  项目3 ...

也就是它是按字符的ASCCII码来排序。

该元素(row / column groups)还有个属性:Comparator exp.(要求是java.util.Comparator的实现类),

步骤一:

可以通过实现java.util.Comparator 接口,自己写个比较类:package com.junefsh.utils;

import java.util.Comparator;

public class JsReportComparator implements Comparator {

public int compare(Object o1, Object o2) {

int rst = 1;

String s1= (String) o1;

String s2 = (String) o2;

int s1_ln = s1.length();

int s2_ln = s2.length();

if(s1.startsWith("小额")){

if(s2.startsWith("小额")){

if(s1_ln < s2_ln)

rst = -1;

else if(s1_ln == s2_ln){

rst = s1.compareTo(s2);

}else{

rst = 1;

}

}else{

rst = -1;

}

}else if(s2.startsWith("小额")){

rst = 1;

}

return rst;

}

}

其中注意的是compare()方法需要根据自己的需求实现,该方法主要比较的是row/column groups 中的bucket expression 。

步骤二:

模板中导入我们新建的类

添加一个Parameter

将row / column groups 属性Comparator exp.引用我们添加的参数:$P{myOrder}

步骤三

我们要把JsReportComparator 类加载到项目中,以便调试,把该文件打包成jar,在iReport IDE 中 "工具"-》“选项”-》"iReport"->"classpath" 将,jar添加,此后便可调试看效果了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值