使用Java从e​​xcel读取日期字段

时间:2013-09-10 17:44:49

标签: java excel apache-poi

我尝试使用以下命令从java代码中的Excel工作表中读取Date值:

DateUtil.isCellDateFormatted(cell) 

但它抛出一个例外cannot read text from a numeric field

有什么建议吗?

2 个答案:

答案 0 :(得分:4)

您可以使用以下方法检查,然后根据您的要求使用。

if(cell.getCellType()==Cell.CELL_TYPE_NUMERIC){
        if (DateUtil.isCellDateFormatted(cell)) {
            System.out.println(cell.getDateCellValue());
        } else {
            System.out.println(cell.getNumericCellValue());
        }
}

答案 1 :(得分:0)

DateUtil.isCellDateFormatted方法假设您已经检查过该单元格是一个数值。请参阅代码http://grepcode.com/file/repo1.maven.org/maven2/org.openl.rules/org.openl.lib.poi.dev/5.8.0/org/apache/poi/ss/usermodel/DateUtil.java#DateUtil.isCellDateFormatted%28org.apache.poi.ss.usermodel.Cell%29

由于Excel在内部将日期存储为数字,因此请先验证该单元格是否为数字,然后检查它是否为日期。

然后你可以用这个或类似的东西得到实际的日期值:

Date date = HSSFDateUtil.getJavaDate(cell.getNumberValue());