Apache poi读取excel数字是科学计数法的问题

前几天在做项目的时候,对一个excel文件进行解析的时候,因为需要读取数字列,然后我就写用apach的poi工具集进行读取,发现读取的数字是科学计数法,经过了解发现无论数字是否小数,使用cell.getNumbericCellValue() 去获取值的时候,会得到一个double,而且当长度大一点的时候会变成科学计数法形式。

// JAVA CODE

public static Double getStringCell(XSSFRow row, int colNum) {
String value = null;
short lastCellNum = row.getLastCellNum();
if (lastCellNum > colNum) {
XSSFCell xssfCell = row.getCell(colNum);
if (xssfCell != null) {
value = xssfCell.getNumericCellValue();
}
}
return value;
}

那么获取这个单元格的原始的数据,就其实是一个double怎么转换成整数的问题了。 我们就可以用DecimalFormat对这个double转换一下得到的就是我们要的值了。

// JAVA CODE

public static Double getStringCell(XSSFRow row, int colNum) {
String value = null;
short lastCellNum = row.getLastCellNum();
if (lastCellNum > colNum) {
XSSFCell xssfCell = row.getCell(colNum);
if (xssfCell != null) {
value = xssfCell.toString();
String eChar = "E”;
if(value.contains(eChar)){
DecimalFormat df = new DecimalFormat("0.######”); //后面的###代表保留后面6位小数,会自动进行调整如果是1000000000.25632则会显示1000000000.25632
value = df.format(xssfCell.getNumericCellValue());
}
}
}
return value;
}

加入讨论

电子邮件地址不会被公开。