美文网首页DAILY BUG
POI 读取Excel,日期格式错误,读取为数值型问题

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

作者: 刘泽田 | 来源:发表于2019-05-07 10:32 被阅读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());
            }
        }
    

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/hsnsoqtx.html