如何在iReport中覆盖特定于语言的模式?我已在具有#,##0.00
值的字段上设置了模式Double
。
如果报告是英文的,我会得到以下示例输出。:
10,000.00
如果报告是德语,我会得到以下示例输出。:
10.000,00
我需要英语和德语报告的输出10.000,00
。
我怎么能意识到这一点?
答案 0 :(得分:5)
不要设置任何图案(确保将其删除)。而是在TextFieldExpression字段中使用
new java.text.DecimalFormat("#,##0.00", new java.text.DecimalFormatSymbols(java.util.Locale.GERMANY)).format($P{parameter1}).
(这是一个字符串。如果你的textfield表达式类是double,你可以解析结果。) 这将格式化所有语言的德语区域设置。
答案 1 :(得分:0)
最新版本的iReport有一个名为Pattern Expression的功能。在那里你只需要指定一个模式字符串,并保持字段计算的其余部分相同。通过这种方式,您可以将数据与格式分开,我认为它可以使事情更清晰,但它也可以让您在运行时更好地控制格式。
编辑。一个例子被要求,这里是: https://gist.github.com/ilopez/9369809#file-so22141769-jrxml
魔法发生在这个表达式中:
new DecimalFormat().toPattern()
您可以通过REPORT_LOCALE参数指定报告区域设置,请参阅:Setting REPORT_LOCALE in IReport?