Jasper reports 隐藏列时删除空间

Jasper reports 隐藏列时删除空间,jasper-reports,Jasper Reports,我正在使用JasperReports 4.5.0生成报告。我正在生成不同格式的报告,如html、csv、pdf、xls、doc。在我的一份报告中,我有6列,分别是col1、col2、col3、col4、col5、col6。但是根据情况我想把可乐藏起来。为此,我使用了打印Whenexpression。现在它根据条件隐藏列,但问题是该列占用的空间保持不变 如何删除col3和col5之间的空白 下面的代码是为了理解我是如何使用它的 <staticText>

我正在使用JasperReports 4.5.0生成报告。我正在生成不同格式的报告,如html、csv、pdf、xls、doc。在我的一份报告中,我有6列,分别是col1、col2、col3、col4、col5、col6。但是根据情况我想把可乐藏起来。为此,我使用了打印Whenexpression。现在它根据条件隐藏列,但问题是该列占用的空间保持不变

如何删除col3和col5之间的空白

下面的代码是为了理解我是如何使用它的

<staticText>
                <reportElement x="500" y="0" width="0" height="20" isRemoveLineWhenBlank="true" isPrintWhenDetailOverflows="true">
                    <printWhenExpression><![CDATA[$P{routeType}==Boolean.FALSE]]></printWhenExpression>
                </reportElement>
                <box>
                    <topPen lineWidth="0.25"/>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font size="12" isBold="true"/>
                </textElement>
                <text><![CDATA[Col4]]></text>
            </staticText>

<textField isBlankWhenNull="true">
                <reportElement x="500" y="0" width="0" height="20" isRemoveLineWhenBlank="true" isPrintWhenDetailOverflows="true">
                    <printWhenExpression><![CDATA[$P{routeType}==Boolean.FALSE]]></printWhenExpression>
                </reportElement>
                <box>
                    <leftPen lineWidth="0.25"/>
                    <bottomPen lineWidth="0.25"/>
                </box>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <textFieldExpression><![CDATA[$F{col4}]]></textFieldExpression>
            </textField>

仅当routeType值为false时,此字段才会打印。否则,它还应删除带有空格的列。

  • 您可以使用JasperReports APIDynamicJasper API
使用DynamicAsper API的示例

  • 您可以使用“假”字段(textField)来显示一列的数据,而不是显示两个字段(两列)
您可以在两个文本字段下放置另一个文本字段(宽度为两个文本字段)。使用“打印时显示”属性可以显示两列或一列

这是工作样本。 以下是我的报告设计(在iReport中):

我的jrxml文件:


要显示所有三列,我们应该将hideStreetColumn参数设置为false。结果将是:

要仅显示两列(街道列处于隐藏状态),应将hideStreetColumn参数设置为true。结果将是:


你可以用两个细节带来欺骗它。一个详图标注栏B1带有6根柱,第二个标注栏B2带有5根柱。然后,当PrintWheenPression为false时,在波段属性中打印B1,当PrintWheenPression为true时打印B2。

Hi,您给出的示例很好。但是这里基于显示一列或两列的条件。但是在我的示例中,基于条件,列vl显示或隐藏。如果它是隐藏的,则我希望删除该列占用的空白。这正是我在本示例中所做的。我正在删除列并移动其他列--可以是六列或二十列,没关系。主要思想是使用“假”字段(或多个字段)如果报告有更多的页面,那么从第二页开始,在每一页的第一行,它只显示该特定字段的值,其余字段都是空的。看起来不太好。你能借助截图?