SpringBoot整合EasyExcel使用

EasyExcel

1、引入依赖

//注意:使用其他版本可能出现POI与easyexcel版本不兼容问题!
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.17</version>
</dependency>
<!--xlsx-->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.17</version>
</dependency>  
<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>easyexcel</artifactId>
     <version>2.1.1</version>
</dependency>

2、创建实体类,与excel对应

@Data
public class DemoData {
     
    //设置Excel表头名称
    @ExcelProperty("学生编号")
    private Integer sno;

    @ExcelProperty("学生名称")
    private String sname;
}

写操作

public class TestEasyExcel {
     
    public static void main(String[] args) {
     
        //EasyExcel写操作
        //1、写入的文件夹地址与excel名称
        String fileName = "D:\\test.xlsx";

        //2、调用api
        /**write(String pathName, Class head)
         * pathName:路径名称
         * head:实体类
         *
         * sheet(String sheetName)
         * sheetName:表名称
         *
         * doWrite(List data)
         * data:传入一个对象集合
         */
        EasyExcel.write(fileName, DemoData.class).sheet("学生列表").doWrite(getData());


    }

    //创建方法返回list集合
    public static List<DemoData> getData() {
     
        ArrayList<DemoData> list = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
     
            DemoData data = new DemoData();
            data.setSno(i);
            data.setSname("Cyrus" + i);
            list.add(data);
        }
        return list;
    }
}

测试效果:
SpringBoot整合EasyExcel使用_第1张图片

读操作

1、修改实体类

@Data
public class DemoData {
     
    //设置Excel表头名称
    @ExcelProperty(value = "学生编号",index = 0)
    private Integer sno;

    @ExcelProperty(value = "学生名称",index = 1)
    private String sname;
}

2、创建一个监听器类,继承AnalysisEventListener

public class ExcelListener extends AnalysisEventListener<DemoData> {
     
    /**
     * 一行一行读取excel中内容
     */
    @Override
    public void invoke(DemoData data, AnalysisContext context) {
     
        System.out.println("***"+data);

    }
    /**
     * 获取表头内容
     */
    @Override
    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
     
        System.out.println("表头"+headMap);
    }

    /**
     * 读取完之后执行
     */
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
     

    }
}

3、操作

public class TestEasyExcel {
     
    public static void main(String[] args) {
     
        String fileName = "D:\\test.xlsx";
        EasyExcel.read(fileName, DemoData.class, new ExcelListener()).sheet().doRead();
    }

4、效果
SpringBoot整合EasyExcel使用_第2张图片

注意点

实际开发中因为读操作中的监听器不能交给spring进行管理,所以不能进行注入实现对数据库的操作

解决方案:

使用聚合方法,将Service通过有参构造穿进去

SpringBoot整合EasyExcel使用_第3张图片

SpringBoot整合EasyExcel使用_第4张图片

你可能感兴趣的:(excel,java)