在iReport中覆盖特定于语言的模式

时间:2014-03-03 08:19:42

标签: jasper-reports ireport

如何在iReport中覆盖特定于语言的模式?我已在具有#,##0.00值的字段上设置了模式Double

如果报告是英文的,我会得到以下示例输出。:

10,000.00

如果报告是德语,我会得到以下示例输出。:

10.000,00

我需要英语和德语报告的输出10.000,00

我怎么能意识到这一点?

2 个答案:

答案 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 Using Local Locale Settings

您可以通过REPORT_LOCALE参数指定报告区域设置,请参阅:Setting REPORT_LOCALE in IReport?