【问题标题】:Format money value according to locale and currency [duplicate]根据区域设置和货币格式化货币价值[重复]
【发布时间】: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 等。等,再次阅读完整的问题!
  • 非常好的问题。不是重复的。请有权限的人重新打开。

标签: jasper-reports currency


【解决方案1】:

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

【讨论】:

  • 是的,我已经根据用户语言正确设置了这些参数。我的问题是货币值的格式没有考虑到这一点,并且我需要在报告中明确设置货币代码,而不是使用默认的语言环境。
  • 确认@ianare。设置 REPORT_LOCALE 没有帮助
猜你喜欢
  • 1970-01-01
  • 2017-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多