Birt报告中的数字格式为小数

时间:2014-04-04 13:27:36

标签: java mysql format report birt

我有一张桌子,它给出了Nos。和Decimal(体重-kg)的值 例如,10.5公斤Kg(即10公斤和455克)      和没有。如在10号中

现在所有这些值都来自表格中的一列(十进制(10,3)-mysql),并且基于unittype列,我必须决定BIRT报告中是否有3位十进制或零小数。

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

我在onFetch上写这个

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);

我无法获得值

2 个答案:

答案 0 :(得分:7)

我不相信这可以从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会将其识别为数字。

答案 1 :(得分:0)

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

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

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