java代码怎么实现 excel导入的文本值转换成日期

如题所述

读取excel文件中日期内容是通过poi获取的,代码如下:

HSSFWorkbook excbook = new HSSFWorkbook(ExcFile);
//获取第一个sheet页 HSSFSheet excSheet = excbook.getSheetAt(0);
//获取第一行
HSSFRow oneRow = excSheet.getRow(0);
//获取第一行的第一个表格  
HSSFCell oneCell = oneRow.getCell(0);   
 switch (oneCell.getCellType()) {

  case HSSFCell.CELL_TYPE_NUMERIC:

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  

    if(HSSFDateUtil.isCellDateFormatted(oneCell)){ 

    String  str = sdf.format(HSSFDateUtil.getJavaDate(oneCell.getNumericCellValue())).toString();

    System.out.println(str); 
    }
   break;
 }

   

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-13
换一个读excel的jar包。Apache的那些个jar包,读excel时,时间字段之类的不太好使。
建议使用 jxl.Workbook,读出来就是yyyy/MM/dd格式。
第2个回答  2012-09-13
用 java.text 包里的
SimpleDateFormat类 的parse方法 可以实现追问

麻烦能回答的具体点么,例如我在excel中录入的时间为2012-9-10,导入到java里就变成了41162,然后我想把41162再变成2012-9-10,怎么实现? 最好能写上代码,真的非常感谢!

追答

excel里的日期型统统加引号就可以 了,
不加的话没办法的

追问

加上引号啊,好像是不可以,由于是给客户做的,只能我们在程序里控制!不过依然感谢您的回答,非常感谢!

追答

如果是这样就只能傻算了
excel的日期形式内部保存是序列形的数字,得到的方法就是 1900/1/1 =1 而后每一天加1
即1900/1/2=2 1900/1/3=3....类推
java呢 就
Calendar cld = Calendar.getInstance() ;
cld .set(1900,1,1);
cld.add(Calendar.DAY_OF_YEAR , Excel的数字);
就可以了

本回答被提问者和网友采纳
第3个回答  2012-09-13
你的excel里面的字段不是日期类型么?追问

是啊,但是导入后变成文本值了,我想在java代码里再把数值变成日期类型!

追答

poi还是jxl啊?其实excel的每一个元素都是一个对象,你设几个断点,看看是不是获取的方法错了

相似回答