• spring boot 使用 POI 读取Excel文件


    内容简介

     本文主要介绍使用POI进行Excel文件的相关操作,涉及读取文件,获取sheet表格,对单元格内容进行读写操作,以及合并单元格的操作。

    Excel文件目录

    Excel模板文件存了resourse目录下,如下图:

    POM引用

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

    重要说明

    如果是xls格式,使用HSSFWorkbook,HSSFSheet,HSSFRow来进行相关操作
    如果是xlsx格式,使用XSSFWorkbook,XSSFSheet,XSSFRow来进行相关操作

    读取Excel文件

    // 定义一个数据格式化对象
    XSSFWorkbook wb = null;
    try {
        //excel模板路径
        File cfgFile = ResourceUtils.getFile(ResourceUtils.CLASSPATH_URL_PREFIX + "static/ExcelTemplate/ContradictionMatrix.xlsx");
        InputStream in = new FileInputStream(cfgFile);
        //读取excel模板
        wb = new XSSFWorkbook(in);
    
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    获取sheet表格及读写单元格内容

    //获取sheet表格,及读取单元格内容
    XSSFSheet sheet = null;
    try{
        sheet = wb.getSheetAt(0);
        //先将获取的单元格设置为String类型,下面使用getStringCellValue获取单元格内容
        //如果不设置为String类型,如果单元格是数字,则报如下异常
        //java.lang.IllegalStateException: Cannot get a STRING value from a NUMERIC cell
        sheet.getRow(2).getCell(2).setCellType(CellType.STRING);
        //读取单元格内容
        String cellValue = sheet.getRow(2).getCell(2).getStringCellValue();
        
        //添加一行
        XSSFRow row = sheet.createRow(1); //第2行开始写数据
        row.setHeight((short)400); //设置行高
        //向单元格写数据
        row.createCell(1).setCellValue("名称");
    }
    catch (Exception e){
        e.printStackTrace();
    }

    合并单元格

    使用下面的语句合并单元格:

    sheet.addMergedRegion(new CellRangeAddress(0,2,15,18));

    看一下CellRangeAddress的构造函数:

    /**
     * Creates new cell range. Indexes are zero-based.
     * 
     * @param firstRow Index of first row
     * @param lastRow Index of last row (inclusive), must be equal to or larger than {@code firstRow}
     * @param firstCol Index of first column
     * @param lastCol Index of last column (inclusive), must be equal to or larger than {@code firstCol}
     */
    public CellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol) {
        super(firstRow, lastRow, firstCol, lastCol);
        
        if (lastRow < firstRow || lastCol < firstCol)
            throw new IllegalArgumentException("lastRow < firstRow || lastCol < firstCol");
    }
  • 相关阅读:
    Spring+JCaptcha验证码使用示例
    Hibernate-Session使用的背后
    DWR+Spring配置使用
    Spring+Quartz配置定时任务
    利用HtmlParser解析网页内容
    利用HttpClient4访问网页
    利用Common-Fileupload上传文件图片
    利用Common-BeanUtils封装请求参数
    浮点数的一点东西
    基数排序——浮点数结构体进阶
  • 原文地址:https://www.cnblogs.com/codecat/p/10948120.html
Copyright © 2020-2023  润新知