报错:You cannot get a string value from a numeric cell
使用POI对excel表数据进行操作时出现了该问题,从数据库导出数据到excel表中,datetime类型的数据以String类型存储,当对表内的该列数据做修改后,excel将自动修改单元格的格式,从而导致在重新读取时出现了以上错误。
解决办法:
判断读取的单元格是否为HSSFCell.CELL_TYPE_NUMERIC类型,然后利用cell.getNumericCellValue(),读取该单元格的数据。
getNumericCellValue()读出的数据类型是double型,
因此,需要重新进行数据转换:HSSFDateUtil.getJavaDate(d).toLocaleString()。其中d为读出的double类型数据。
至此,则成功的将excel表内的数据读取出来。
单元格的格式总共有以下几种:
HSSFCell.CELL_TYPE_BLANK;HSSFCell.CELL_TYPE_BOOLEAN;
HSSFCell.CELL_TYPE_ERROR;
HSSFCell.CELL_TYPE_FORMULA;
HSSFCell.CELL_TYPE_NUMERIC;
HSSFCell.CELL_TYPE_STRING;
Cell cell = row.getCell(k);
int cellType = cell.getCellType(); //Getting a null pointer exception when the cell is empty
if (cellType == HSSFCell.CELL_TYPE_NUMERIC) {
value = cell.getNumericCellValue() + "";
} else {
value = cell.getStringCellValue();
}