POI处理Excel中各种日期格式问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POI处理Excel中各种日期格式问题相关的知识,希望对你有一定的参考价值。

前不久写过一篇随笔《EXCEL解析之终极方法WorkbookFactory》,提到使用WorkbookFactory来处理Excel文件数据,最近发现一个问题就是这个办法不能很好的处理各种日期格式,比如下面这些:

那么如何将这些格式正确识别并输出呢?下面来分享一下解决方法。

其实答案已经在之前已经写过。需要回到之前比较笨重的那个办法,就是在读取单元格时对单元格中数据的种类做判断,再将数据做适当转换,POI将EXCEL数据分成以下几种类型:

CELL_TYPE_NUMERIC

CELL_TYPE_STRING

CELL_TYPE_BOOLEAN

CELL_TYPE_FORMULA

CELL_TYPE_BLANK

CELL_TYPE_ERROR

本次随笔内容主要讨论的是日期格式问题,所以要注意的是, 当type是numberic的时候,又分为数字格式和日期格式。

数字格式->如果是double类型就要读取double类型,如果是int则直接读取。使用getNumericCellValue读取数字类型。

日期格式->则需要使用POI提供的DataFormatter类的formatCellValue方法来读取日期类型单元格。

完美解决各种日期格式问题,包括中文格式日期。

运行结果如下:

提示:在判断单元格是否为日期时,由于是对XSSFcell和HSSFcell分开读取,使用的是HSSFDataUtil类的isCellDateFormatted方法,XSSFDataUtil类没有定义这个方法,进过分析POI jar包,发现它是继承于

org.apache.poi.ss.usermodel.DateUtil.isCellDateFormatted(Cell cell),于是直接使用绝对路径来指定方法,调试可以成功。

总觉得在脚本中使用这种绝对路劲比较难看,很不雅观,如果谁有更好的方法,欢迎分享,谢谢!!!

以上是关于POI处理Excel中各种日期格式问题的主要内容,如果未能解决你的问题,请参考以下文章

POI处理excel日期格式问题(xlsx)

如何使用POI处理Excel中的日期数据类型

POI对Excel自定义日期格式的读取

java中使用poi导入导出excel文件_并自定义日期格式

POI - 如何将单元格值设置为日期并应用默认Excel日期格式?

java poi读取excel日期格式数据