所以我遇到了 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>
此处附有打破格式的文字:
<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>
有人碰到过这个吗?有关如何修复的任何建议吗?
答案 0 :(得分:3)
好的,所以解决方案是我选择的模式&#34;自定义格式&#34;然后我添加了两个小数位的模式### 0.00并尝试用%符号附加它。所以我的自定义模式看起来像###0.00%;-###0.00%
。
但是当它运行时它乘以数字bu 100.事实证明&#34;模式中百分比字符的存在导致值在被格式化之前乘以100。&#34;
因此,为了避免这种情况,请在%符号周围添加引号。所以你的最终模式如下:###0.00'%';-###0.00'%'
运行时,您将使用%符号
获得两位小数答案 1 :(得分:0)
如何点击要自定义的字段。
转到“属性” 转到Pattern然后单击Number - &gt;单击Decimal 2个空格 然后按OK。
然后再次返回模式并转到自定义格式。 然后在文本字段中为正面和负面部分添加一个百分比 然后按确定。
修改强> 如何将字段设为字符串,然后附加百分号,如:
$F{ScoreMeasure}.toString()+"%"