如何从交叉表中删除空/空列?

jasper-reports crosstab

714 观看

1回复

6 作者的声誉

我的布局中有一个交叉表元素。列组中的值之一为null,我不想在输出中显示具有null值的列。

我尝试过检查null值时为空白,并修改expression属性时的print。但是它所做的只是用空值替换null值,但该列仍出现在输出中。

电流输出

在此处输入图片说明

预期产量

在此处输入图片说明

作者: user8612546 的来源 发布者: 2017 年 9 月 15 日

回应 1


1

17323 作者的声誉

要将列标题中的名称从null更改为其他名称,您可以修改bucketExpression

<bucketExpression><![CDATA[($F{myField==null}?"New name":$F{myField})]]></bucketExpression>

使用此功能,您还可以将值移动到新的存储桶(列)中。

如果要删除整列,AFIK则没有其他方法可以在将其传递到交叉表之前过滤掉数据源中的空值。

选项包括:

  • 如果您使用的是sql数据源,则只需在where子句中添加该字段,对于mysql来说就像 WHERE myField is not null

  • 在数据源上使用filterExpression例如。

    <filterExpression><![CDATA[($F{myField}!=null)]]></filterExpression> 
    
  • 开发一个自定义的JRDatasource,包装将忽略的数据源,如果记录null有价值,则跳转。

结论:要删除该列,需要在将其传递给交叉表之前从数据源中删除记录。

作者: Petter Friberg 发布者: 2017 年 9 月 15 日
32x32