所以我遇到了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)
有人遇到过这个吗?关于如何修复有什么建议吗?
好的,解决方案是在我选择“自定义格式”的模式中,然后添加两位小数的模式 ###0.00 并尝试在其后面附加 % 符号。所以我的自定义模式看起来像###0.00%;-###0.00%。
但是当运行它时,它会将数字乘以 bu 100。事实证明,“模式中百分号字符的存在导致该值在格式化之前乘以 100”。
因此,为了避免这种情况,您可以在 % 符号周围添加引号。所以你的最终模式如下所示:###0.00'%';-###0.00'%'
运行时,您将得到带有 % 符号的小数点后两位
| 归档时间: |
|
| 查看次数: |
2607 次 |
| 最近记录: |