Java使用POI实现对Execl表格进行数据读取

  最近因为项目需要从文档读取数据进行存储,因此花了点时间对这个知识点进行了一些学习和总结,通过自己的学习使用心得,希望对大家有所帮助。关于POI的介绍,网上有很多大牛都介绍的很详细,读者有时间可以去看看,这里我只做应用层面的说明,帮助你快速掌握使用。

1.在原项目架构基础上导入以下所需maven配置。(非maven项目请自行下载jar包)


    org.apache.poi
    poi
    3.17



    org.apache.poi
    poi-ooxml
    3.17



    org.apache.commons
    commons-collections4
    4.1

2.读取表格实现方法

public void addDataByExeclImport(String url) throws Exception {
    File file = new File(url);
    if (file.isFile() && file.exists()) {     //判断文件是否存在  
        String[] split = file.getName().split("\\.");  //获取文件的后缀名,"."是特殊字符,需要转化
        Workbook wb;  //定义文档对象
        if ("xls".equals(split[1])) {   //xls,xlsx对文档对象的实现方式是不同的,需要不同对待
            FileInputStream inputStream = new FileInputStream(file);
            wb = new HSSFWorkbook(inputStream);
        }else if ("xlsx".equals(split[1])){
            wb = new XSSFWorkbook(file);
        }else {
            System.out.println("文件类型错误");
            return null;
        }
        Sheet sheet = wb.getSheetAt(0);  //开始解析工作表(说明1,见后文)
        int firstRowNum = sheet.getFirstRowNum(); //获取当前表格的第一行
        int lastRowNum = sheet.getLastRowNum();   //获取当前表格的最后一行(说明2,见后文)
        //遍历数据集
        for (int rIndex = firstRowNum; rIndex <= lastRowNum; rIndex++) {
            Row row = sheet.getRow(rIndex); // 获取当前行数据
            if (row != null) {
                int firstCellNum = row.getFirstCellNum(); //当前行的第一列
                int lastCellNum = row.getLastCellNum();   //当前行的最后一列(说明3,见后文)
                for (int cIndex = firstCellNum; cIndex < lastCellNum; cIndex++) {
                    row.getCell(cIndex).setCellType(Cell.CELL_TYPE_STRING); //设置列值类型,基本都为STRING型没问题
                    String value = row.getCell(cIndex).getStringCellValue(); //获取列值
                    System.out.println(value); //打印测试值
                }
             }
        }
     }
}

说明:

1.工作表:下面Sheet1,Sheet2...就是工作表,在方法里下标是从0开始的,如果你只有一个sheet,就选0读取当前工作表内容。

Java使用POI实现对Execl表格进行数据读取_第1张图片

2.所谓最后一行,就是指数据不为空的最后一行。如图第6行是最后一行,哪怕只有1个值,空值第7行才不算进行数里。

Java使用POI实现对Execl表格进行数据读取_第2张图片

3.最后一列概念如说明2。

特别说明:

如果数据存在合并单元格的情况,如下图取值需要注意。当按照行遍历数据的时候,第一行按照列读取数据是正常的,也就是第1行在读取B列的时候,会取到值为2,读B列的时候则为4。但是从第2行开始,往下所有在读取B,D两列的时候值为" ",这就需要自己根据需求处理。

Java使用POI实现对Execl表格进行数据读取_第3张图片

      以上就是关于POI对表格的基本操作,当然更复杂的操作还可以看POI文档。关于读取之后的操作大家根据自身需要来处理,就不扩展说了,希望以上内容能够对读者快速实现相关功能有所帮助。

 

你可能感兴趣的:(技术博客)