DAILY BUG

POI 读取Excel,日期格式错误,读取为数值型问题

2019-05-07  本文已影响0人  刘泽田

这个问题网上有许多解决方法:

  1. 读取的数值为1900年距离日期的天数,调用calander api从1900年加天数即可得到真正的日期时间,具体可参考:
    https://blog.csdn.net/weixin_39800144/article/details/78668579

但是此方法并不适用我现有业务,我这边读取excel是公共方法类,遍历每一个单元格,不可能把读取为Cell.CELL_TYPE_NUMERIC格式的单元格都做日期化处理;所以放弃此种做法


  1. 其实Cell对象有getDateCellValue()方法,也就是专门针对日期获取的方法,所以应该如何判断出Cell对象数值为日期类型,其实CELL_TYPE_NUMERIC类型下还有具体分类,再次判断分类为日期类型:
 @SuppressWarnings("static-access")
    private static String getValue(Cell cell) {
        if (cell.getCellType() == cell.CELL_TYPE_BOOLEAN) {
            return String.valueOf(cell.getBooleanCellValue());
        } else if (cell.getCellType() == cell.CELL_TYPE_NUMERIC) {
            //数值类型又具体区分日期类型,单独处理
            if (HSSFDateUtil.isCellDateFormatted(cell)) {
                Date date = cell.getDateCellValue();
                return DateJodaUtils.getDateStr(date, "yyyy-MM-dd");
            } else {
                return NumberToTextConverter.toText(cell.getNumericCellValue());
            }
        } else {
            return String.valueOf(cell.getStringCellValue());
        }
    }
上一篇 下一篇

猜你喜欢

热点阅读