美文网首页
Java操作Excel文件方法

Java操作Excel文件方法

作者: 柏丁 | 来源:发表于2020-05-18 18:32 被阅读0次

    Java用POI读取Excel文件

    1. Maven引入POI依赖

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

    若只引入poi,则无XSSFWorkbook和SXSSHWorkbook,还需引入poi-ooxml。HSSFworkbook,XSSFworkbook,SXSSFworkbook区别总结

    2. 获取文件对象(导包过程交给IDEA)

    将文件通过XSSFWorkbook/HSSFWorkbook将文件的IO流转换成WorkBook对象。Excel的Excel文件后缀用响应的类型。.xlsx->XSSFWorkbook,.xls->HSSFWorkbook

    private Workbook getReadWorkBookType(String filePath)  {
            //xls-2003, xlsx-2007
            FileInputStream is = null;
            try {
                is = new FileInputStream(filePath);
                if (filePath.toLowerCase().endsWith("xlsx")) {
                    return new XSSFWorkbook(is);
                } else if (filePath.toLowerCase().endsWith("xls")) {
                    return new HSSFWorkbook(is);
                } else {
                    throw new RuntimeException("excel格式文件错误");
                }
            } catch (IOException e) {
                throw new RuntimeException(e.getMessage());
            } finally {
                IOUtils.closeQuietly(is);
            }
        }
    

    3. 利用步骤2获取到的WorkBook获取Excel文件中的页签(sheet)

    用getSheetAt(int index)方法(var为页签序号,从0开始),或getSheetAt(String sheetName)方法(sheetName为页签名)

    private Sheet getThisFileSheet(Workbook workbook){
            return workbook.getSheetAt(0);
        }
    

    4. 获取单元格

    利用Sheet的方法,获取行Row,再由Row的方法获取Cell(单元格),再根据单元格的类型,获取具体值。

    ////第0行是表名,忽略,从第二行开始读取
    for (int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) {
      Row row = sheet.getRow(rowNum);
      Cell cell = row.getCell(0);
      getCellStringVal(cell).trim();//getCellStringVal方法见下文
    }
    
    private String getCellStringVal(Cell cell) {
            CellType cellType = (cell == null) ? CellType.BLANK : cell.getCellTypeEnum();
            switch (cellType) {
                case NUMERIC:
                    return cell.getStringCellValue();
                case STRING:
                    return cell.getStringCellValue();
                case BOOLEAN:
                    return String.valueOf(cell.getBooleanCellValue());
                case FORMULA:
                    return cell.getCellFormula();
                case BLANK:
                    return null;
                case ERROR:
                    return String.valueOf(cell.getErrorCellValue());
                default:
                    return null;
            }
        }
    

    利用POI写Excel文件


    PageOffice操作Excel文件

    相关文章

      网友评论

          本文标题:Java操作Excel文件方法

          本文链接:https://www.haomeiwen.com/subject/ffuashtx.html