今天用POI在做Excel报表时,遇到一个问题,那就是将数据写入Excel后,Excel中的公式执行完显示的结果为科学计数法。调试Excel设置,没调试成功,最后只好用代码来格式化公式的值。在格式化的工程中发现String类型的值赋值有问题。具体代码如下:
public class ExcelUtil {
public static void main(String[] args) throws Exception {
System.out.println(new ExcelUtil().getChangeValue(-1.862645149230957E-9));
}
/**
*将传入的数据进行格式化(千分位表示,保留两位小数)。
* 第一次格式化后如果是-0.00 ,则进行递归调用
*/
public String getChangeValue(Object obj){
Object obj1=obj;
DecimalFormat format=new DecimalFormat("#,##0.00");
String str= format.format(obj1);
System.out.println("转换后的值为:"+str);
if(str.equals("-0.00")){
System.out.println("+++++++++");
getChangeValue(0);
}else {
return str;
}
System.out.println("----------");
return str;
}
}
<!--EndFragment-->
执行结果如下:
转换后的值为:-0.00
+++++++++
转换后的值为:0.00
----------
-0.00
问题:
最后打印出来的值应该是0.00 ,怎么会是 -0.00 呢???
最后只能修改代码为:
String str="";
public String getChangeValue(Object obj){
Object obj1=obj;
DecimalFormat format=new DecimalFormat("#,##0.00");
str= format.format(obj1);
System.out.println("转换后的值为:"+str);
if(str.equals("-0.00")){
System.out.println("+++++++++");
getChangeValue(0);
}else {
return str;
}
System.out.println("----------");
return str;
}
结果就正常了。
待解。。。。。。。。。。。