2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > java解析excel日期格式_JAVApoi读取excel无法识别自定义格式年月日时分秒

java解析excel日期格式_JAVApoi读取excel无法识别自定义格式年月日时分秒

时间:2018-12-09 17:13:41

相关推荐

java解析excel日期格式_JAVApoi读取excel无法识别自定义格式年月日时分秒

poi仅可以识别文本、数字等类型,无法对自定义时间格式yyyy-MM-dd hh:mm:ss 进行具体的识别。

在仅需要读取年月日的情况下(yyyy-MM-dd): poi读取到到的单元格格式为 Cell.CELL_TYPE_NUMERIC: //数字、日期

随后会根据DateUtil.isCellDateFormatted(cell)的返回值判断是日期还是数字。

如果是日期则 cellValue = fmt.format(cell.getDateCellValue()); //日期型

如果是数字则 cellValue = String.valueOf(cell.getNumericCellValue()); //数字 即可返回正确的日期。

具体代码如下:

switch(cellType) {

case Cell.CELL_TYPE_STRING: //文本

cellValue = cell.getStringCellValue();

break;

case Cell.CELL_TYPE_NUMERIC: //数字、日期

if(DateUtil.isCellDateFormatted(cell)) {

cellValue = fmt.format(cell.getDateCellValue()); //日期型

} else {

cellValue = String.valueOf(cell.getNumericCellValue()); //数字

}

break;

}

但是,当我们需要yyyy-MM-dd hh:mm:ss 格式的时候,则不能满足需求。

当cellType是数字、日期的时候(即为0时),调用cell.getNumericCellValue()方法可以获取到当前日期、数字的double值

调用poi里org.apache.poi.ss.usermodel.DateUtil类的getJavaDate(double值)方法即可转换成日期。

以一个单元格内容为 -3-9 01:15:02,单元格格式为自定义格式 yyyy-MM-dd hh:mm:ss 为例。

代码如下:

switch(cellType) {

case Cell.CELL_TYPE_STRING: //文本

cellValue = cell.getStringCellValue();

break;

case Cell.CELL_TYPE_NUMERIC: //数字、日期

if(DateUtil.isCellDateFormatted(cell)) {

//日期型

Double d = cell.getNumericCellValue();// d = 43533.05210648148;

Date date = DateUtil.getJavaDate();

System.out.println("date:"+DatetimeUtils.date2string(date, "yyyy-MM-dd HH:mm:ss"));

//输出-03-09 01:15:02

} else {

cellValue = String.valueOf(cell.getNumericCellValue()); //数字

}

break;

}

可以发现,cell.getNumericCellValue()方法获取到的double值,就是excel将单元格格式从 日期格式 转换为 文本格式后得到的那个数值。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。