JexcelApi和POI导入Excel日期识别成数字的解决方案

转载 2011年01月15日 14:07:00
用过Jxl或者POI导入Excel信息的朋友应该都遇到过这样的问题。日期格式的单元格有些会识别成数字单元格。(为什么说有些呢?因为在Excel文件中输入2008-3-18的日期可以正确导入,但是输入3-18的就会识别成数字。)关于这个问题我找了很久,都没有找到解答。现在解决了,所以记录以下,一是怕以后忘了,二是希望遇到这个问题的朋友可以少走弯路。

首先来分析一下这个问题的成因。既然两个开源包都有同样的问题,说明可能是Excel内部就是这样存储的。所以需要通过一些其他的方式来从NUMERIC Cell中把这些日期找出来。

有两种方式可以辨别NUMERIC Cell储存的是否是日期:

方法一:如果用的是POI,可以直接用HSSFDateUtil.isCellDateFormatted(cell)这个方法。
Java代码
  1. case HSSFCell.CELL_TYPE_NUMERIC:   
  2.     if (HSSFDateUtil.isCellDateFormatted(cell)) {   
  3.         double d = cell.getNumericCellValue();   
  4.         Date date = HSSFDateUtil.getJavaDate(d);   
  5.     }   

方法二:如果用的是Jxl,可以将cell.getCellFormat 强制转换成 XFRecord。然后判断XFRecord.formatIndex 如果等于 58就是DateCell。
Java代码

    if (cell.getType() == CellType.NUMBER) {   

        NumberCell nc = (NumberCell) cell;   

        XFRecord xfr = (XFRecord) nc.getCellFormat();   

          final int INDEX_OF_DATE = 58;   

         if(xfr.formatIndex == INDEX_OF_DATE) {   

             Date date = HSSFDateUtil.getJavaDate(nc.getValue());   

             content = dateformat.format(date);   

       }    

   }  


得到的这个double不能直接拿来用。转换可以用HSSFDateUtil.getJavaDate(double date)这个方法。

相关文章推荐

通用的POI导入Excel解决方案

  • 2015年02月11日 23:45
  • 1.5MB
  • 下载

java使用poi写入excel文档的一种解决方案

本人在学习使用selenium和UiAutomator的时候,学习了一excel文档的操作,前两天写了一个读取excel的方案,今天看了一下写入excel的,暂时用的Map>作为写入源。现在分享出来,...

在Java中读取EXCEL文件 JExcelAPI与Apache POI两者对比

一,JExcelAPI与Apache POI两者对比   1、JExcelAPI不适合商业应用,它都是会莫名其妙的读不出来数据。   2、Apache POI是一纯Java的实现,不仅能读微软的E...

Java Web利用poi导出Excel2003、2007完整解决方案

1997-2003版行列数量限制:行-65535,列-256 2007-2010版行列数量限制:行-1048576,列-16384根据自己的业务需求来选择版本,这里注意一下,03版本的后缀是.xls ...

【转】 poi 处理excel文件时的问题,及解决方案

poi 处理excel文件时的问题,及解决方案http://blog.csdn.net/guoqingcun/archive/2010/12/09/6065070.aspx 本文中要解决两个问题1:读...

java poi导出Excel表格超大数据量解决方案

Java实现导出excel表格功能,大部分都会使用apache poi, apache poi API 地址

POI:操作EXCEL出现的单元格格式丢失问题的解决方案

1、问题截图:     2、问题分析: 在网上找过一些答案,都说是excel2003版本的问题,对单元格的样式有限制。当时公司没有网络,也不能查找到更多的资料、 后经过领导批准找到另外的...

java使用JexcelApi和POI两种方法操作excel

在java里面如何操作excel,其中有两种方法:JexcelApi和POI两种方法,参考网上别人做的,发现对于简单的操作,两种效果都不错。在其中JexcelApi操作时,对于在已有表格中添加数据,没...

Excel导入,数字+文本,文本无法识别的解决方案

很多人都知道这个解决方案,不过本人比较菜,找了很久才知道,发现网上的解决方案都是都要结合起来才能,就整理了一下,大大路过,不要喷我,这是俺整理的,加上自己的实践         在导入Excel...

(8) 如何用Apache POI操作Excel文件-----POI-3.10.1 的一个黑白颜色颠倒的bug以及解决方案

在用POI-3.10的版本设置Excel单元格的字体的颜色或者单元格背景色的时候,对于XSSF方式,如果设置的颜色为黑色,则实际在Excel中渲染出来的却是白色;反之,如果设置的颜色为白色,则实际在E...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JexcelApi和POI导入Excel日期识别成数字的解决方案
举报原因:
原因补充:

(最多只允许输入30个字)