可能的重复:
在 jasper 报告中将字符串格式化为货币格式 https://stackoverflow.com/questions/10913495/formatting-a-string-to-a-currency-format-in-jasper-report
我正在使用 JasperReports 创建发票文档,该文档需要本地化并支持多种货币。
例如,当报告为法语时,货币值应显示为1,00 €
or 1,00 $
当使用美国英语时,应该是€ 0.02
or $ 1.00
.
至关重要的是,发票货币通常与区域设置的货币不同,并且在某些情况下,同一文档中可能使用多种货币。
我尝试过使用附带的格式化工具:<textField pattern="¤ #,##0.00">
,但是这不会根据区域设置更改格式,而且我找不到更改货币的方法(它仅替换¤
与报告的区域设置货币符号,所以在这两个方面都是错误的)。
我在这里看了一下:如何在 Java 中针对区域设置设置货币格式 https://stackoverflow.com/questions/5713171/how-do-i-format-a-currency-for-a-locale-in-java但在我的报告中还没有找到使用它的方法。
Thanks!
好吧,我终于弄清楚了,但由于模组锁定了这个问题,据说这是一个重复的问题——但它不是……无论如何,这里有一个答案:
<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>
ireport中有两个参数,REPORT_LOCALE和XML_LOCALE,可以帮助
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)