2014-09-26 47 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