使用POI库从Excel工作表中解析电话号码

时间:2014-02-10 11:15:08

标签: android excel parsing apache-poi

我在使用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()))+"";
                        }
}

2 个答案:

答案 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工作表看起来像:

enter image description here

<强>代码:

System.out.println(new DataFormatter().formatCellValue(cell));

上面一行会打印出来:

50%
$ 1,200
12/21/14
9886605446

而正常的印刷品会以不同的方式解释它:

0.5
1200.0
21-Dec-2014
9.886605446E9