Java如何检查单元格是否包含日期值?

下面的代码检查Excel文件的第一个单元格是否包含日期值。在Excel中,日期的单元格类型返回为HSSFCell.CELL_TYPE_NUMERIC,以确保它是否包含日期,我们可以使用实用程序方法HSSFDateUtil.isCellDateFormatted(HSSFCell cell),该方法将检查单元格值是否为有效日期。

package org.nhooo.example.poi;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.CellType;

import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class DateCellType {
    public static void main(String[] args) throws Exception {
        String filename = "datecelltype.xls";

        try (FileInputStream fis = new FileInputStream(filename)) {
            HSSFWorkbook workbook = new HSSFWorkbook(fis);
            HSSFSheet sheet = workbook.getSheetAt(0);

            // 读取工作表上的第一个单元格。
            HSSFCell cell = sheet.getRow(0).getCell(0);
            if (cell.getCellType() == CellType.NUMERIC) {
                System.out.println("Cell type for date data type is numeric.");
            }

            // 使用HSSFDateUtil检查单元格是否包含日期。
            if (HSSFDateUtil.isCellDateFormatted(cell)) {
                System.out.println("The cell contains a date value: "
                    + cell.getDateCellValue());
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

代码段的示例结果:

Cell type for date data type is numeric.
The cell contains a date value: Tue Jul 23 00:00:00 WITA 2019

Maven依赖

<!-- https://search.maven.org/remotecontent?filepath=org/apache/poi/poi/4.1.0/poi-4.1.0.jar -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.1.0</version>
</dependency>

Maven中央