格式/模式问题 - 将 Int 附加到文本会导致格式错误

lam*_*bob 3 jasper-reports

所以我遇到了JasperReports模式字段的问题。我创建了一个交叉表,我需要所有的都$F{ScoreMeasure}具有两位小数并附加“%”符号。例如,$F{ScoreMeasure}交叉表中的单元格应显示 25.42%。

我遇到的问题是我通过将“%”符号添加到文本字段表达式来附加“%”符号:$V{ScoreMeasure}+"%"。这对于整数来说效果很好。

当我尝试通过添加模式来添加两位小数#,##0.00并运行报告时,我得到一些字段有两位小数,而其他字段有多个小数(最多 8 位)。

如果我从文本字段表达式中删除附加文本(+“%”),我会得到正确的格式。但我不知道如何获得这两个?

以下是它在没有附加“%”的情况下工作时的摘录:

<crosstabCell width="73" height="25" rowTotalGroup="Name">
                    <cellContents backcolor="#005FB3" mode="Opaque">
                        <box>
                            <pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                        </box>
                        <textField pattern="#,##0.00">
                            <reportElement style="Crosstab Data Text" x="0" y="0" width="73" height="25" forecolor="#FFFFFF" uuid="50401fd4-b9b1-4bf2-bd74-9a0f083e77ff"/>
                            <textElement verticalAlignment="Middle">
                                <font fontName="Arial"/>
                            </textElement>
                            <textFieldExpression><![CDATA[$V{ScoreMeasure}
]]></textFieldExpression>
                        </textField>
                    </cellContents>
Run Code Online (Sandbox Code Playgroud)

这里附加了破坏格式的文本:

<crosstabCell width="73" height="25" rowTotalGroup="Name">
                    <cellContents backcolor="#005FB3" mode="Opaque">
                        <box>
                            <pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                        </box>
                        <textField pattern="#,##0.00">
                            <reportElement style="Crosstab Data Text" x="0" y="0" width="73" height="25" forecolor="#FFFFFF" uuid="50401fd4-b9b1-4bf2-bd74-9a0f083e77ff"/>
                            <textElement verticalAlignment="Middle">
                                <font fontName="Arial"/>
                            </textElement>
                            <textFieldExpression><![CDATA[$V{ScoreMeasure}+"%"
]]></textFieldExpression>
                        </textField>
                    </cellContents>
Run Code Online (Sandbox Code Playgroud)

有人遇到过这个吗?关于如何修复有什么建议吗?

lam*_*bob 5

好的,解决方案是在我选择“自定义格式”的模式中,然后添加两位小数的模式 ###0.00 并尝试在其后面附加 % 符号。所以我的自定义模式看起来像###0.00%;-###0.00%。

但是当运行它时,它会将数字乘以 bu 100。事实证明,“模式中百分号字符的存在导致该值在格式化之前乘以 100”。

因此,为了避免这种情况,您可以在 % 符号周围添加引号。所以你的最终模式如下所示:###0.00'%';-###0.00'%'

运行时,您将得到带有 % 符号的小数点后两位