根据区域和货币[复制]格式物有所值(Format money value according to

2019-08-02 15:14发布

可能重复:
格式化字符串中的碧玉报告货币格式

我创建使用需要进行本地化,并支持多币种的JasperReports的发票单据。

因此,例如,当报告是法语,币值应显示为1,00 €1,00 $ ,当美国英语应该是€ 0.02$ 1.00

重要的是,发票币种往往是从语言环境的货币不同,在某些情况下,有可能是同一文档中使用多种货币。

我已经使用附带的格式化工具尝试: <textField pattern="¤ #,##0.00">然而这并没有具体的语言环境改变的格式和我找不到改变货币的方式(这只替换¤该报告的语言环境的货币符号,这样的错误在这两方面)。

我已经采取了看看这里: 如何格式化货币在Java语言环境 ,但还没有想出我的报告中使用此的一种方式。

谢谢!



嗯,我终于想通了,但由于MODS的锁定问题,按说这是一个重复的 - 它是不是...反正这里是一个答案:

<variable name="CURRENCY" class="java.util.Currency">
     <variableExpression><![CDATA[Currency.getInstance($F{currencyCode})]]></variableExpression>
</variable>

<variable name="CURRENCY_FORMAT" class="java.text.NumberFormat">
    <variableExpression><![CDATA[
NumberFormat.getCurrencyInstance($P{REPORT_LOCALE});
((NumberFormat)value).setCurrency($V{CURRENCY})
]]></variableExpression>
</variable>

<textField>
     <reportElement x="179" y="58" width="89" height="15"/>
     <textFieldExpression><![CDATA[$V{CURRENCY_FORMAT}.format($F{revenueCents}/100)]]></textFieldExpression>
</textField>

Answer 1:

有在iREPORT分享到人人,REPORT_LOCALE和XML_LOCALE两个参数,可以帮助



文章来源: Format money value according to locale and currency [duplicate]