使用POI库parsingExcel表格中的电话号码
我在使用poi libparsingexcel表格时遇到问题。 在所有的string值是正确的,但电话被转换成十进制格式,如电话号码是9876543210parsing后,我得到9.876543210E10如何得到正确的电话号码,而parsing。 我的代码是 –
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()))+""; } }
使用setCellType(Cell.CELL_TYPE_STRING)
在读取之前设置列的types。
喜欢
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 } }
你也可以使用一个通用的解决scheme来获取你的Excel数据,就像你在Excel中看到的一样。
apache-poi
提供了DataFormatter
类作为实用工具来利用Excel中出现的内容格式。 你也可以select自定义格式,一个简单的例子就是(单元格是对你的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