getStringCellValue方法异常 java.lang.IllegalStateException: Cannot get a STRING value from a NUMERIC cell
时间: 2023-12-01 19:41:20 浏览: 41
该异常通常在使用POI库中的getStringCellValue()方法时出现,因为该方法只能用于获取单元格中的字符串类型值,如果单元格中的值不是字符串类型,就会抛出该异常。例如,如果单元格中的值是数字类型,而你使用getStringCellValue()方法来获取该单元格的值,就会抛出java.lang.IllegalStateException: Cannot get a STRING value from a NUMERIC cell异常。
解决该异常的方法是,首先使用getCellType()方法来获取单元格的类型,然后根据单元格的类型来选择使用相应的方法来获取单元格的值。例如,如果单元格的类型是数字类型,就可以使用getNumericCellValue()方法来获取该单元格的值。
以下是一个使用POI库来获取单元格值的例子:
```java
// 创建工作簿对象
Workbook workbook = new XSSFWorkbook(new FileInputStream("example.xlsx"));
// 获取第一个工作表
Sheet sheet = workbook.getSheetAt(0);
// 获取第二行第三列的单元格
Cell cell = sheet.getRow(1).getCell(2);
// 判断单元格的类型
if (cell.getCellType() == CellType.STRING) {
// 如果单元格的类型是字符串类型,就使用getStringCellValue()方法来获取单元格的值
String value = cell.getStringCellValue();
System.out.println("单元格的值是:" + value);
} else if (cell.getCellType() == CellType.NUMERIC) {
// 如果单元格的类型是数字类型,就使用getNumericCellValue()方法来获取单元格的值
double value = cell.getNumericCellValue();
System.out.println("单元格的值是:" + value);
}
```