jxl读取cell数字精度为3位的异常

jxl读取cell中的数字原来使用的是sheet 是默认的 Workbook.getWorkbook(is).getSheet(0);  

seet.getCell( 1,1).getContents();

发现会出现问题,cell里面值是小数点后五位,取都得到的是三位小数。

后台回出现

Debug: format string is #,##0.000 提示。

依据 http://blog.csdn.net/wangwuyilove/article/details/45643749 说明是因为有个默认转化规格。

所以我们需要绕过这个默认转化。

找到原生态的读取text,没进行过任何转化的实现方法。

获取class得知

seet.getCell( 1,1) 是LabelCell 还是 NumberCell
LabelCell cell = (LabelCell) seet.getCell( 1,1); 
String NetWt = cell.getString()

其中NumberCell会变成科学计数法 6.66666666E10,读取成这样还得转。

因此演变为

package com.hgsoft.util;

import java.math.BigDecimal;

import jxl.Cell;
import jxl.LabelCell;
import jxl.NumberCell;

public class JxlUtil {
    public static String getOriginalContent(Cell cell){
        String result = "";
         if(cell instanceof LabelCell){
             result =  ( (LabelCell)cell).getString();
         }else if (cell instanceof NumberCell){
             Double  cellDouble = ((NumberCell)cell).getValue();
             BigDecimal db = new BigDecimal(cellDouble.toString());
             result = db.toPlainString();
         }else{
             result = cell.getContents();
         }
         return result;
    }
}

 

posted @ 2016-02-26 11:51  Lets飞跃  阅读(405)  评论(0)    收藏  举报