根据区域设置和货币格式化货币价值

ian*_*aré 6 currency jasper-reports

可能重复:
在jasper报告中将字符串格式化为货币格式

我正在使用JasperReports创建发票文档,需要进行本地化并支持多种货币.

因此,例如,当报告使用法语时,货币值应显示为1,00 €1,00 $以美国英语显示为€ 0.02$ 1.00.

至关重要的是,发票币种通常与当地货币不同,在某些情况下,同一单据中可能会使用多种货币.

我已经尝试使用包含的格式化工具:<textField pattern="¤ #,##0.00">但是这不会根据区域设置更改格式,我找不到更改货币的方法(它只替换¤报表的区域设置货币符号,所以错误的两者都有).

我在这里看一下:如何在Java中为Locale格式化Currency,但是在我的报告中没有找到使用它的方法.

谢谢!



好吧,我终于想通了,但是因为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>
Run Code Online (Sandbox Code Playgroud)

小智 0

ireport中有两个参数,REPORT_LOCALE和XML_LOCALE,可以帮助