【发布时间】:2012-11-12 15:54:39
【问题描述】:
可能重复:
formatting a string to a currency format in jasper report
我正在使用需要本地化并支持多种货币的 JasperReports 创建发票文档。
因此,例如,当报告为法语时,货币值应显示为 1,00 € 或 1,00 $,而在美国英语中应显示为 € 0.02 或 $ 1.00。
至关重要的是,发票货币通常与区域设置的货币不同,在某些情况下,同一文档中可能使用多种货币。
我已经尝试使用包含的格式化工具:<textField pattern="¤ #,##0.00">,但是这不会根据语言环境更改格式,我找不到更改货币的方法(它只会将 ¤ 替换为报告的语言环境货币符号,因此在这两个方面都是错误的)。
我看过这里:How do I format a Currency for a Locale in Java,但还没有想出在我的报告中使用它的方法。
谢谢!
好吧,我终于想通了,但是由于模组锁定了问题,因此据说它是重复的-这不是...无论如何,这是一个答案:
<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>
【问题讨论】:
-
这不是重复的!!另一个问题是关于手动指定数字格式,而 ianare 希望使用区域设置的默认数字格式。请@Alex K 等。等,再次阅读完整的问题!
-
非常好的问题。不是重复的。请有权限的人重新打开。