首先,iReport需要这个问题。我必须用逗号代替点号。我的问题是,我们数据库中的字段类型是BigDecimal,因此不存在任何替换方法。所以我把类型改为String,但后来我得到了这样的消息:
it.businesslogic.ireport.gui.logpane.ProblemItem@820dc5 The type java.lang.CharSequence cannot be resolved. It is indirectly referenced from required .class files
我的代码看起来像:
new String($F{gewicht}.toString()).replace(".",",")
我能做什么?
尝试输入以下文本表达式:
$F{gewicht}.toString().replace(".",",")
如果这不起作用,一个替代方案是处理Java层中的格式化,例如
BigDecimal bd = new BigDecimal(1.2345);
NumberFormat nf = NumberFormat.getNumberInstance(Locale.GERMAN);
DecimalFormat df = (DecimalFormat)nf;
String gewicht = df.format(bd);
在这里,我使用了欧洲-德国语言环境,其中小数点和逗号将角色与美国和其他一些地方的角色颠倒。您可能希望同时处理逗号和小数点。
您可以使用文本字段模式:
<textField pattern="#,##0.00 €">
这将为您提供德语格式。在这种情况下,这是针对€值的,但如果需要,您可以跳过€并添加更多的descimals:
<textField pattern="#,####0.0000">
另一种方法可能是:
new DecimalFormat("#,##0.00 €",
new DecimalFormatSymbols(Locale.GERMANY)).
format(Double.parseDouble($F{gewicht}))
绕过问题:无法解析类型java.lang.CharSequence。它是从必需的.class文件中间接引用的
您可以设置一个新的DecimalFormat,如:new DecimalFormat("#,##0.00€",new DecimalFormatSymbols(Locale.GERMANY)).format(Double.parseDouble($F{gewicht}))
感谢@hering