我在使用poi lib解析excel表时遇到问题。 所有字符串值都正确但电话被转换为十进制格式,如果电话号码 9876543210 解析后我得到 9.876543210E10 如何在解析时获得正确的电话号码。 我的代码是 -
while(cellIter.hasNext()){
HSSFCell myCell = (HSSFCell) cellIter.next();
String cellValue = "";
// Check for cell Type
if(myCell.getCellType() == HSSFCell.CELL_TYPE_STRING){
cellValue = myCell.getStringCellValue();
}
else if(myCell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC){
System.out.println("cell type -- number"+myCell.getNumericCellValue());
cellValue =new Double( (myCell.getNumericCellValue()))+"";
}
}
答案 0 :(得分:2)
使用setCellType(Cell.CELL_TYPE_STRING)
在读取之前设置列的类型。
喜欢
else if(myCell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC){
// Set type as String
myCell.setCellType(Cell.CELL_TYPE_STRING);
// And read as String
String numberAsString = myCell.getStringCellValue();
System.out.println("cell type -- number"+numberAsString);
try {
cellValue = Double.parseDouble(numberAsString);
} catch (NumberFormatException e) {
cellValue = 0; // Handle unexpected values
}
}
答案 1 :(得分:2)
您还可以使用通用解决方案按原样获取Excel数据,格式与您在Excel中看到的格式相同。
apache-poi
提供DataFormatter
类作为实用程序,以利用excel上显示的内容的格式。您也可以选择自定义格式,一个简单的例子就是(单元格是对XSSFCell
对象的引用):
Excel工作表看起来像:
<强>代码:强>
System.out.println(new DataFormatter().formatCellValue(cell));
上面一行会打印出来:
50%
$ 1,200
12/21/14
9886605446
而正常的印刷品会以不同的方式解释它:
0.5
1200.0
21-Dec-2014
9.886605446E9