Java 通过 POI 读取 Excel 表格中的数据(包含日期类型数据)

  • 首先你的得有 poi 的 jar 包,或者使用 maven 导入 poi 的依赖
			
            
                org.apache.poi
                poi
                3.14
            
            
                org.apache.poi
                poi-ooxml
                3.14
            
  • 需要读取的表格数据
    Java 通过 POI 读取 Excel 表格中的数据(包含日期类型数据)_第1张图片
  • 当通过 poi 处理 excel 表格时,excel 表格中有日期类型的数据时,poi很可能处理单元格的日期数据时就有可能是一串数字,而使用java程序基本无法转换。对于时间格式问题我们需要转换一下;
  • 代码(可以直接复制测试,拿走不谢):
	@Test
    public void testRead() throws Exception{
        //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();
    }
  • 日期转换与判断的主要代码:
						/*
                        判断是否读取到了日期数据:
                        如果是那就进行格式转换,否则会读取的科学计数值
                        不是就输出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());
                        }
  • 不转换就是这个样子 :
    Java 通过 POI 读取 Excel 表格中的数据(包含日期类型数据)_第2张图片
  • 格式转换之后的,这样看着就正常多了:
    在这里插入图片描述

你可能感兴趣的:(Java,Dubbo)