格式化/模式问题 - 使用文本追加Int会导致格式错误

时间:2014-09-26 13:27:42

标签: 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>

此处附有打破格式的文字:

<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>

有人碰到过这个吗?有关如何修复的任何建议吗?

2 个答案:

答案 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()+"%"