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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
 

   

参考技术A 换一个读excel的jar包。Apache的那些个jar包,读excel时,时间字段之类的不太好使。
建议使用 jxl.Workbook,读出来就是yyyy/MM/dd格式。
参考技术B 用 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的数字);
就可以了

本回答被提问者和网友采纳
参考技术C 你的excel里面的字段不是日期类型么?追问

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

追答

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

以上是关于java代码怎么实现 excel导入的文本值转换成日期的主要内容,如果未能解决你的问题,请参考以下文章

如何将Excel文档转换成UTF-8格式的文本文件

能不能用JAVA类实现把EXCEL文件转化成PDF文件

java怎么将excel中string类型在导入到数据库时转换成表中对应的id

java excel转换prn

如何用Java实现将word里的表格数据写入到excel中去

如何把csv文件转换成“正常的”excel?