2015-04-14 110 views
0

在jasper報告中,我使用JSON數據源。 此數據源包含數字(例如159.994)。忽略jasper小數分隔符

有一個類java.lang.double(我們稱之爲「doubleField」)的字段以及帶有該字段和模式("#,##0.00 ¤ (brutto)")的文本字段。 該模式工作正常(德國貨幣格式),但如果我只打印出doubleField的值,預期的輸出將是「195,99」或「159.994」。 但實際上它是"159.994,00""159994.0"

有一種解決方案將報告的語言從「groovy」更改爲「JavaScript」,但這不會有幫助,也不適用。

有一個「快速&髒」的解決方案(沒有很快),只是將JSON值作爲字符串,然後在文本字段中將其轉換爲雙精度值。這工作正常,但它很髒,並不是很快。

任何想法?

+0

我不清楚問題是什麼。你說模式工作正常,所以這不是問題。然後你說'但實際上它是「159.994,00」或「159994.0」,那麼它是什麼,159.994,00或159994.0?它是否同時打印?爲什麼當格式化輸出正確時出現問題? – mbmast

+0

問題是:該模式只適用於如果該字段是一個字符串,我在文本字段中將其強制轉換爲雙精度型。 恕我直言,將字段聲明爲「double」而不是「string」會更清潔,並且以後再投... – hering

+0

好的,這就清楚地說明了這個問題。我發佈我的下一條評論作爲回答,因爲我無法在評論中獲得所有我需要的文本和格式 – mbmast

回答

0

我有一個Jasper報告的定義。我只是從報告定義中包含一些我認爲可能與您的問題相關的內容。

首先,我有幾個字段的定義。以下是其中兩個:

<field name="FundFixedBeginningBalance" class="java.lang.Double"> 
    <fieldDescription> 
     <![CDATA[FundFixedBeginningBalance/FundFixedBeginningBalanceValue]]> 
    </fieldDescription> 
</field> 
<field name="FundNonFixedBeginningBalance" class="java.lang.Double"> 
    <fieldDescription> 
     <![CDATA[FundNonFixedBeginningBalance/FundNonFixedBeginningBalanceValue]]> 
    </fieldDescription> 
</field> 

請注意兩者如何定義爲class="java.lang.Double"。我使用的是XPath表達式,因爲我的數據是用XML編寫的,但這與JSON沒有根本的區別。後來,在報表佈局部分,我有:

<textField pattern="#,##0.00 ;(#,##0.00)" isBlankWhenNull="true"> 
     <reportElement positionType="Float" x="368" y="52" width="100" height="14" uuid="deac984d-39b8-49f4-b4d2-28e66681c098"> 
      <property name="local_mesure_unitx" value="pixel"/> 
      <property name="com.jaspersoft.studio.unit.x" value="px"/> 
     </reportElement> 
     <textElement textAlignment="Right"/> 
     <textFieldExpression><![CDATA[$F{FundFixedBeginningBalance} + $F{FundNonFixedBeginningBalance}]]></textFieldExpression> 
    </textField> 

通知存在textFieldExpression元素中沒有鑄造;只需用$F替換兩個字段並將它們添加在一起(並正確打印)即可。你在做一些不同的事情嗎?

+0

我甚至沒有計算。相反,我只是寫了類似於: '<![CDATA [$ F {FundFixedBeginningBalance}]]>' – hering

+0

您的JSON的外觀如下所示:我的XML如下所示:\t \t \t \t' 46401.54'。請注意,沒有人物將數千人分開,並且存在分隔仙的時期。你有可能使用歐洲格式的JSON(例如46.401,54或46401,54)和美國人,而賈斯珀的東西你使用的是美國格式? – mbmast

+0

對不起,本意是說「...... Jasper認爲你使用的是美式格式?」 – mbmast