美文网首页
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