背景
需求做EXCEL导入时引用POI对其进行解析、当解析EXCEL时间列(EXCEL文件中该列格式为时间)的抛出异常
解决
随即使用了HSSFDateUtil.isCellDateFormatted(cell)
判断是否日期,并解析成日期类
注意
POI解析日期类时会将日期(2022-08-25)解析成数字(44798),使用HSSFDateUtil
的判断日期时必须判断单元格是否数值。
核心代码
if (Cell.CELL_TYPE_NUMERIC == cell.getCellType() && HSSFDateUtil.isCellDateFormatted(cell))
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = HSSFDateUtil.getJavaDate(cell.getNumericCellValue());
String dateValue = sdf.format(date);
}else {
cell.setCellType(Cell.CELL_TYPE_STRING);
String stringValue = cell.getStringCellValue();
}