本文主要介绍Java中,使用POI读取Excel文件中时间日期及其它格式的数据的方法,以及相关的示例代码。

1、安装引用Apache POI

Maven中pom.xml添加如下:

<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.0.1</version>
</dependency>

2、读取Excel中时间日期数据

InputStream inputStream = new FileInputStream("D://test.xlsx");
XSSFWorkbook wb = new XSSFWorkbook(inputStream);
Sheet sheet = wb.getSheetAt(0);
Cell cell = sheet.getRow(0).getCell(0);// 获取第一行第一列的单元格
if (cell != null)
{
    if (cell.getCellTypeEnum() != CellType.STRING && HSSFDateUtil.isCellDateFormatted(cell))
    {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = HSSFDateUtil.getJavaDate(cell.getNumericCellValue());
        String value = sdf.format(date);
        System.out.println(value);
    }
}
wb.close();

3、读取Excel中其它数据

//1.使用流读取文件
FileInputStream fileInputStream =
        new FileInputStream(new File("C:\\Users\\KingHao\\Desktop\\poiTest.xlsx"));
//2.使用 xssf 创建 workbook
XSSFWorkbook excel = new XSSFWorkbook(fileInputStream);
//3.根据索引获取sheet
XSSFSheet sheet = excel.getSheetAt(0);
//4.遍历row
for (Row row:sheet){
    System.out.println(row);
    for (Cell cell:row){
        switch (cell.getCellType()){
            //判断读取的数据中是否有String类型的
            case Cell.CELL_TYPE_STRING:
                System.out.println(cell.getStringCellValue());
                break;
            case Cell.CELL_TYPE_NUMERIC:
                /*
                判断是否读取到了日期数据:
                如果是那就进行格式转换,否则会读取的科学计数值
                不是就输出number 数字
                 */
                if (HSSFDateUtil.isCellDateFormatted(cell)){
                    Date date = cell.getDateCellValue();
                    //格式转换
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                    String format = sdf.format(date);
                    System.out.println(format);
                }else {
                    System.out.println(cell.getNumericCellValue());
                }
                break;
        }
    }
}
excel.close();

或者

switch(cell.getCellType()) {
    case Cell.CELL_TYPE_STRING:
        System.out.print(cell.getStringCellValue() + "\t\t");
        break;
    case Cell.CELL_TYPE_NUMERIC:
        if (DateUtil.isCellDateFormatted(cell)) {
            SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
            System.out.print(dateFormat.format(cell.getDateCellValue()) + "\t\t");
        } else {
            System.out.print(cell.getNumericCellValue() + "\t\t");
        }
        break;
    case Cell.CELL_TYPE_BOOLEAN:
        System.out.print(cell.getBooleanCellValue() + "\t\t");
        break;
}

相关文档:

Java 使用POI填充Word表格内容和复制模板行属性方法示例代码

Java 使用POI操作Word的页眉和页脚的方法及示例代码

Java 使用Apache POI常用操作word的方法及示例代码

推荐文档