Java Birt报告中的十进制数字格式

Java Birt报告中的十进制数字格式,java,mysql,format,report,birt,Java,Mysql,Format,Report,Birt,我有一个表格,它以数字和小数(重量kg)为单位给出数值 例如10.455千克(即10千克和455克) 和10个相同 现在,所有这些值都来自表中的一列(Decimal(10,3)-mysql),并且基于unittype列,我必须决定在BIRT报告中是使用3个Decimal还是使用零个Decimal 我知道通过脚本可以修改值。。但我无法使用脚本 我在网上写这封信 if(row["unittype"]=="Nos") var df = new Packages.java.text.DecimalFor

我有一个表格,它以数字和小数(重量kg)为单位给出数值 例如10.455千克(即10千克和455克) 和10个相同

现在,所有这些值都来自表中的一列(Decimal(10,3)-mysql),并且基于unittype列,我必须决定在BIRT报告中是使用3个Decimal还是使用零个Decimal

我知道通过脚本可以修改值。。但我无法使用脚本

我在网上写这封信

if(row["unittype"]=="Nos")
var df = new Packages.java.text.DecimalFormat("#,###.##");
else
var df = new Packages.java.text.DecimalFormat("#,###");

df.format(row["invoicedquantity"]);
this.setDisplayValue(df);

我无法获取值

我认为这不能从onFetch脚本中工作,这种脚本应该放在数据元素的“onRender”事件中。此外,格式化程序将返回结果,因此应为:

this.setDisplayValue(df.format(row["invoicedquantity"]));
但我认为在数据集中创建一个计算列作为数据类型“String”更容易,表达式为:

if(row["unittype"]=="Nos"){
  Formatter.format(row["invoicedquantity"],"#,###.## Kg");
}else{
  Formatter.format(row["invoicedquantity"],"#,### Kg");
}
编辑: 在深入研究之后,我找到了一种更合适的方法,通过更改“numberformat”属性。在数据元素的onRender或onCreate脚本(应该是一个数字数据类型)中,我们可以执行以下操作:

if(row["unittype"]=="Nos"){
  this.getStyle().numberFormat="#,###.## Kg";
}else{
  this.getStyle().numberFormat="#,### Kg";
}

这是一种更好的方法,因为数据元素仍然具有数字数据类型,因此如果在excel中导出报表,excel会将其识别为数字。

最简单的方法是使用固定小数的数字格式

选择字段 转到:属性编辑器->数字格式


选择货币并进行相应更改。

在报告呈现后使用此脚本时,什么是可见的?输出中没有更改Hanks Dominique用于回复,但InvoiceQuantity和unittype从表中多次出现(因为发票中有多个行项目)当我在该列的onRender上添加上面的if-else脚本时,它不会改变/影响值..我遗漏了什么吗?我正在应用数据元素的onREnder,我必须格式化Dominique。。这太棒了。。它运转平稳。。你能帮我把它格式化成一个印度数字吗,它是(#,#,#,#,##,0.00)。。。我找不到这个号码的那套。Birt在每3个数字后加逗号。提前感谢!!