使用Apache的POI读取Excel,遇到一个问题,读取Excel中的日期类型的Cell,发现读出来的是double类型的数值,如下代码:
String cellValue = cell.getCellTypeEnum() == CellType.NUMERIC ? new DecimalFormat("0.####").format(cell.getNumericCellValue()) : cell.getRichStringCellValue().toString().trim();
原来,POI里有一个关于日期的工具类org.apache.poi.hssf.usermodel.HSSFDateUtil,可以使用
HSSFDateUtil.isCellDateFormatted(XSSFCell) 判断是否是日期类型,然后利用HSSFDateUtil.getJavaDate()来得到Date类型的值
下面给出我的工具方法,得到cell的值:
public static String getCellStringValue(XSSFCell cell) { if (cell == null) { return ""; } if (cell.getCellTypeEnum() == CellType.BLANK) { return ""; } if (cell.getCellTypeEnum() == CellType.FORMULA) { return new DecimalFormat("0.####").format(cell.getNumericCellValue()); } if (cell.getCellTypeEnum() != CellType.NUMERIC && cell.getCellTypeEnum() != CellType.STRING) { return String.valueOf(cell.getCellTypeEnum()); } if (HSSFDateUtil.isCellDateFormatted(cell)) { Date date = HSSFDateUtil.getJavaDate(cell.getNumericCellValue()); return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date); } return cell.getCellTypeEnum() == CellType.NUMERIC ? new DecimalFormat("0.####").format(cell.getNumericCellValue()) : cell.getRichStringCellValue().toString().trim(); }
文章评论