用jxl读取excel中为date类型的cell,为什么读出来后是number类型的?
比如我读“2006年7月” 读出来的却是“35123”这样的数字怎么能将“2006年7月”直接读出来,或者将这个数字转化成“2006年7月”呢?求高人指点

解决方案 »

  1.   

    excel格式是2006-7时可以读出来,“2006年7月”这种格式没试过 关注!!!
      

  2.   

    在excl里你的那一列是日期类型的吗?
    //注册日期
    if(rs.getCell(2,i).getType() == CellType.DATE){
    DateCell datec11 = (DateCell)rs.getCell(2, i);
    Date date = datec11.getDate();
    if(date!=null){
    misRegInfo.setRegDate(date);
    }
    }
      

  3.   

    楼上各位这个问题已经解决
    忘记结贴了“2006年7月”这种格式,取出来一定是number,不管你excel里是什么。。
    需要自己写个转换函数.在调用java的SimpleDateFormat类格式化。
      

  4.   

    不是的,我测试过,是可以取出Date的。public class XlsRead {
    public static void main(String[] args) throws BiffException, IOException{

    String dest = "E:\\test.xls";
    InputStream is = new FileInputStream(dest);
    Workbook rwb = Workbook.getWorkbook(is);
    Sheet rs = rwb.getSheet(0);

    for(int i=1;i<rs.getRows();i++){

    //注册日期
    if(rs.getCell(0,i).getType() == CellType.DATE){
    DateCell datec11 = (DateCell)rs.getCell(0, i);
    Date date = datec11.getDate();
    System.out.println(date);
    }

    }

    rwb.close();
    }
    }
    我虽然帖了代码,但我觉得关键应该不在代码。而是你excel文件的问题。
    在你存放日期的那列,应该设置单元格格式,并且选择相应的格式。
      

  5.   

    是可以取到Date型的但是“2006年7月”这种格式不行,最起码在我的excel不行,不管你再excel里面给他设定什么样的format话说,上次送给楼上20分,这次又相中我了?贴转换过程,顺便送你分。 String tempTime = st.getCell(0, k + 1).getContents(); long tempTimeLong = Long.valueOf(tempTime).intValue();  //将数字转化成long型

    long ss = (tempTimeLong - 70 * 365 - 17 - 2) * 24 * 3600 * 1000;  //excel的那个数字是距离1900年的天数
                                                                               //java 是距离1970年天数,但是明明期间只有17个闰年
                                                                               //我尝试的结果要减19才能正确,原因不明

    Date dss = new Date(ss);                               //用这个数字初始化一个Date

    SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日");

    String sss = formatter.format(dss);