zoukankan      html  css  js  c++  java
  • 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),于是直接使用绝对路径来指定方法,调试可以成功。

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

  • 相关阅读:
    Xpath 和Css Selector使用
    JS 基础
    python中requests.session的妙用
    HTML基础之DOM
    吃着火锅唱着歌学会Docker
    SAAS方法论
    Python操作MySQL
    Flask中session实现原理
    人的成长永远不会大于自己的思想
    Serializers 序列化组件
  • 原文地址:https://www.cnblogs.com/dogdogwang/p/6911288.html
Copyright © 2011-2022 走看看