Java 如何在iReport中用逗号替换点?
首先,iReport需要这个问题。 我必须用逗号代替点符号。我的问题是数据库中字段的类型是BigDecimal,因此不存在任何替换方法。 因此,我将类型更改为字符串,但随后我收到以下消息:Java 如何在iReport中用逗号替换点?,java,jasper-reports,Java,Jasper Reports,首先,iReport需要这个问题。 我必须用逗号代替点符号。我的问题是数据库中字段的类型是BigDecimal,因此不存在任何替换方法。 因此,我将类型更改为字符串,但随后我收到以下消息: it.businesslogic.ireport.gui.logpane.ProblemItem@820dc5 The type java.lang.CharSequence cannot be resolved. It is indirectly referenced from required .clas
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);
这里我使用了欧洲-德国语言环境,小数点和逗号与美国和其他一些地方的角色相反。您可能需要同时处理逗号和小数点。尝试输入以下文本表达式:
$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 €">
这将为您提供德语格式。在这种情况下,这适用于欧元值,但如果需要,您可以跳过欧元并添加更多描述:
<textField pattern="#,####0.0000">
另一种方法是:
新的十进制格式(“#,##0.00欧元”),
新的十进制符号(Locale.GERMANY))。
格式(Double.parseDouble($F{gewicht}))
您可以使用文本字段模式:
<textField pattern="#,##0.00 €">
这将为您提供德语格式。在这种情况下,这适用于欧元值,但如果需要,您可以跳过欧元并添加更多描述:
<textField pattern="#,####0.0000">
另一种方法是:
新的十进制格式(“#,##0.00欧元”),
新的十进制符号(Locale.GERMANY))。
格式化(Double.parseDouble($F{gewicht}))
以绕过此问题:无法解析java.lang.CharSequence类型。它是从必需的.class文件间接引用的
您可以设置新的十进制格式,如:
新的DecimalFormat(“#,###0.00€”,新的DecimalFormatSymbols(Locale.GERMANY)).format(Double.parseDouble($F{gewicht}))
感谢@hering绕过这个问题:java.lang.CharSequence类型无法解决。它是从必需的.class文件间接引用的 您可以设置新的十进制格式,如: 新的DecimalFormat(“#,###0.00€”,新的DecimalFormatSymbols(Locale.GERMANY)).format(Double.parseDouble($F{gewicht}))
谢谢@heringNice,如果示例是
newbigdecimal(“1.2345”)代码>(精度4)与1.2345(没有可由java确定的精度)相反。@Tim Biegeleisen我尝试过它,它可以工作,但错误消息是相同的。第二个解决方案:我在哪里可以找到Java层?谢谢。我指的是生成Jasper报告的Java代码。如果示例是newBigDecimal(“1.2345”)代码>(精度4)与1.2345(没有可由java确定的精度)相反。@Tim Biegeleisen我尝试过它,它可以工作,但错误消息是相同的。第二个解决方案:我在哪里可以找到Java层?谢谢。我指的是生成Jasper报告的Java代码。但是您需要格式化一个数字吗?看起来像是一个,您在jasper Report中使用了区域设置和模式,但是您需要格式化一个数字吗?好像是一个,你在jasper Report中使用区域设置和模式谢谢,我一开始试过这个。但这并没有改变任何事情@heringWe将其用于double值,因此我们需要将其转换为double,这样才能产生任何效果。虽然变量是一个双精度值,但我们需要强制转换istDouble.parseDouble($F{gewicht})
我对Double-to有这个问题,例如cust\u kost\ges字段类型java.lang.Double;文本字段表达式类java.lang.Double;模式#,##0.00,我的输出是120.00欧元而不是120,00欧元如果您的数据提供程序是JSON,我建议将字段类型更改为String,并在需要时将其转换为Double,我们在使用JSON和Double字段时遇到问题。您还可以尝试的是new DecimalFormat(“#,##0.00€“),new DecimalFormatSymbols(Locale.GERMANY)).format(Double.parseDouble($F{gewicht}))
我在上面的答案中添加了这种方法。欢迎您。请随意接受正确的答案:)谢谢,我一开始就试过了。但这并没有改变任何事情@heringWe将其用于double值,因此我们需要将其转换为double,这样才能产生任何效果。虽然变量是一个双精度值,但我们需要强制转换istDouble.parseDouble($F{gewicht})
我对Double-to有这个问题,例如cust\u kost\ges字段类型java.lang.Double;文本字段表达式类java.lang.Double;模式#,##0.00,我的输出是120.00欧元而不是120,00欧元如果您的数据提供程序是JSON,我建议将字段类型更改为String,并在需要时将其转换为Double,我们在使用JSON和Double字段时遇到问题。您还可以尝试的是new DecimalFormat(“#,##0.00€“),new DecimalFormatSymbols(Locale.GERMANY)).format(Double.parseDouble($F{gewicht}))
我在上面的答案中添加了这种方法。欢迎您。请随意接受正确的答案:)