最近在读一个EXCEL数据文件导入的东东,操作到其中一个sheet时,出现以下问题:
    单元格中存放的是,自定义格式的数据,格式为"yyyy年mm月",其中单元格中存放的数据是2005-10-1,在单元格中显示的是"2005年10月",我利用POI进行单元格获取操作,该Cell的cellType是0,也就是数字类型,但明显不符合实际情况,并且通过数字获取方式cell.getNumericCellValue(); 获取的值为38626,也不知怎么得来的数字。  请问,上面这种情况,我怎样区分它究竟是什么类型的Cell呢,并正确的返回我需要的字符类型或日期类型的数据呢?谢谢!

解决方案 »

  1.   

    see http://community.csdn.net/Expert/topic/4567/4567846.xml?temp=.6809351
      

  2.   

    日期在存储的时候通常都是被保存为数字的。
    你只要把那个数字取出来
    然后转换成Date就好了,例如
    int dt = 38626;
    Date date = new Date(0);
    date.setDate(dt);
      

  3.   

    日期在存储的时候通常都是被保存为数字的。
    你只要把那个数字取出来
    然后转换成Date就好了,例如
    int dt = 38626;
    Date date = new Date(0);
    date.setDate(dt);
      

  4.   

    日期在存储的时候通常都是被保存为数字的。
    你只要把那个数字取出来
    然后转换成Date就好了,例如
    int dt = 38626;
    Date date = new Date(0);
    date.setDate(dt);
      

  5.   

    infowain(infowain) 
    不知道不要乱说,excel的日期是days since 1900-01-01的,java的Date是milliseconds since 1970-01-01 00:00:00.000的
      

  6.   

    微软的excel的记录的数据的含义和java的差别很大,不是你随心所欲可以随便猜测的据个最夸张的例子,根据曾经看过的一个pdf文档(好像是微软出的),单元格的列宽,在xls文件里面的保存的数字(好像是2字节)含义是:1单位宽度,代表该Excel文档第一个字体,显示数字“0”的宽度1/255
      

  7.   

    shine333(enihs)朋友的解释是正确的,
    我现在把我实际的解决方法写出来:
    其中strTJNY是我采用一个固定的函数读取出来的,因而是采用字符类型进行存储的!
    Date tjnyDate=HSSFDateUtil.getJavaDate(Double.parseDouble(strTJNY));