解决方案 »

  1.   

    http://goro.iteye.com/blog/1689096
    里重点是if (DateUtil.isCellDateFormatted(cell)) {   
                    Date theDate = cell.getDateCellValue();  
                    ret = simpleDateFormat.format(theDate);  
                } else {
      

  2.   

    我做的话会再format日期的时候的catch里面进行判断,比如str.indexof("年")类似的,最根本的办法是改excel的模板,限定单元格的格式
      

  3.   

    if(Cell2.getCellType()==HSSFCell.CELL_TYPE_NUMERIC)
           {
            if(HSSFDateUtil.isCellDateFormatted(Cell2))
            {
             double d=Cell2.getNumericCellValue();
             watchData.setTimeLog(HSSFDateUtil.getJavaDate(d));
            }
           }else if (Cell2.getCellType()==HSSFCell.CELL_TYPE_STRING) {
            SimpleDateFormat sFormat=new SimpleDateFormat("dd-MM-yyyy");
            watchData.setTimeLog(sFormat.parse(Cell2.getRichStringCellValue().getString()));
           
           } else{
            watchData.setTimeLog(Cell2.getDateCellValue());
           }  
      

  4.   

    各位大神,我也遇到一样的问题,代码里面加了你们说的那些转换,但是读取xls单元格到后台的时候,数据已经是类似于“41411”的double类型的数据了,求助啊
      

  5.   

    如果在excel单元格中写成5月17日,会存储成这个日期到1900年1月1日的天数,也就是说5月17日存储的是41411。
    可以考虑用集算器将excel文件中的数据读入进来之后,利用日期函数计算转换一下。代码要比jxl少很多,导入加上转换也就2、3行的样子。