线程" main"中的例外情况java.lang.IllegalStateException:无法从数字单元格中获取文本值

时间:2014-07-02 11:03:30

标签: java apache-poi

我编写了如下代码来从Excel中获取值。

String CID = s1.getRow(i).getCell(0).getStringCellValue();

但是在excel中,第一个单元格是一个数值,但在上面的代码中我试图获取String单元格值。这就是我收到错误的原因:

Exception in thread "main" java.lang.IllegalStateException: Cannot get a text value from a numeric cell

任何人都可以为此提供解决方案。如何从excel中获取数值?

7 个答案:

答案 0 :(得分:3)

任何单元格的getCellType()都会为您提供单元格的类型。类型为:

Cell.CELL_TYPE_BLANK
Cell.CELL_TYPE_NUMERIC
Cell.CELL_TYPE_STRING
Cell.CELL_TYPE_FORMULA
Cell.CELL_TYPE_BOOLEAN
Cell.CELL_TYPE_ERROR

最好使用switch语句并收集正确类型的单元格值。 存在getNumericCellValue()和getStringCellValue()函数,但它对类型更安全。

答案 1 :(得分:0)

我不确定,但我认为存在getNumericalCellValue()getIntegerCellValue()会返回您想要的内容。

答案 2 :(得分:0)

在单元格中将撇号添加为该数字的前缀,自动将其转换为文本。它对我有用

答案 3 :(得分:0)

首先检查单元格类型,然后获取其值。

           row.getCell(index).getCellType();
Number ==> row.getCell(index).getNumericCellValue();
String ==> row.getCell(index).getStringCellValue();

答案 4 :(得分:0)

你应该使用它=>

String CID = new BigDecimal(s1.getRow(i).getCell(0).getNumericCellValue()).toString();

答案 5 :(得分:0)

String unitPrice = new Float(wb.getSheetAt(0).getRow(0).getCell(7).getNumericCellValue())。toString();

注意:如果值存储在excel文件中的数字类型中,则这是获取字符串中数据的最佳方法。 我们从第一行的第7个单元格获取数据。

答案 6 :(得分:0)

final DataFormatter df = new DataFormatter();
final XSSFCell cell = row.getCell(cellIndex);
String valueAsString = df.formatCellValue(cell);

这可能有帮助