2014-09-26 48 views
1

所以我遇到了问题与JasperReports模式字段。我创建了一个交叉表,并且我需要所有的$F{ScoreMeasure}都有两位小数,并附上一个“%”符号。因此,例如交叉表中$F{ScoreMeasure}的单元格应显示25.42%。格式化/模式问题 - 用文本追加Int导致格式错误

我碰到的问题是我通过将它添加到文本字段表达式中附加了“%”符号:$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> 

任何跨来这个?有关如何解决的任何建议?

回答

3

好了,该解决方案是我选择的模式“自定义格式”我加入的模式进行两位小数### 0.00并试图用%符号附加。所以我的自定义模式看起来像###0.00%;-###0.00%

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

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

运行时,那么你将有%符号

+0

有趣的,我会记得那一个 – Rika 2014-09-30 16:44:54

0

如何点击您要定制的字段。

转到属性
转到图案,然后单击数字 - >单击十进制的2个空格 然后按确定。

然后再回到模式并转到自定义格式。 然后在正文和负数部分的文本字段中输入一个百分比 然后按确定。

编辑 如何制作领域的字符串,然后追加像百分号:

$F{ScoreMeasure}.toString()+"%" 
+0

嘿丽卡让你的两个小数位,试过(### 0.00%; - ### 0.00%),但再次追加“%”符号导致问题。一旦我添加它似乎自动默认为百分比模式,由于某种原因,它被设置为123,443.21,因此它导致小数点下移两个空格,例如36.66到3666。50% 要对模式设置和#标记的工作方式进行一些研究 – lampbob 2014-09-29 12:46:53

+0

@lampbob我更改或编辑了我的答案。如果你愿意,看看。 – Rika 2014-09-29 18:56:48

+0

嗨Rika,欢呼你的帮助。这不起作用,因为我需要它作为某种形式的int(数字)以及应用了一个样式参数。得到的解决方案,并将其添加 – lampbob 2014-09-30 16:30:55