尝试读取excel文件时出现非法状态异常

时间:2014-04-01 04:54:20

标签: java excel parsing apache-poi

我尝试使用Apache POI库读取excel文件并收到以下错误:

  

java.lang.IllegalStateException:无法从数字单元格中获取文本值     在org.apache.poi.xssf.usermodel.XSSFCell.typeMismatch(XSSFCell.java:845)     在org.apache.poi.xssf.usermodel.XSSFCell.getRichStringCellValue(XSSFCell.java:294)     在org.apache.poi.xssf.usermodel.XSSFCell.getStringCellValue(XSSFCell.java:246)     在com.ge.aviation.TeamDataProcessor.process(TeamDataProcessor.java:174)     在com.ge.aviation.BatchCall $ 1.run(BatchCall.java:30)     在java.util.TimerThread.mainLoop(Timer.java:555)     在java.util.TimerThread.run(Timer.java:505)

我想将单元格中的数值作为文本值读取。我在excel中的数值是9位数字(如:108010407)。

我只是这样阅读excel:

Cell cell = row.getCell(columnNumber)

但它被读作“1.08010407E8”而不是“108010407”,我将此值用作id。为了解决我的问题,我应该采取什么样的方法?

注意:当我像这样更改单元格类型时没有用:

cell.setCellType(Cell.CELL_TYPE_STRING);

1 个答案:

答案 0 :(得分:1)

我的示例来源。

            switch(cell.getCellType()) {
                case org.apache.poi.ss.usermodel.Cell.CELL_TYPE_STRING:
                    data = cell.getRichStringCellValue().toString();
                    break;
                case org.apache.poi.ss.usermodel.Cell.CELL_TYPE_NUMERIC:
                    data = Integer.toString((int)cell.getNumericCellValue());
                    break;
            }

javadoc链接:http://javafind.net/library/13/poi-3.10-FINAL/docs/apidocs/org/apache/poi/xssf/usermodel/XSSFCell.html#getCellType()