Easyexcel使用-通用导入工具类

Easyexcel使用-通用导入工具类

EasyExcel读取文件,是继承一个com.alibaba.excel.event.AnalysisEventListener类回调里面的invoke 方法来获取每一行的数据。
每读取一行,都会回调一个incoke方法

工具类编写

package com.xxx.xx.util;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import lombok.extern.slf4j.Slf4j;

import java.util.ArrayList;
import java.util.List;


/**
 * @Author caicai
 * @Description  Excel通用解析监听类
 *
 * @Date 14:18 
 **/
@Slf4j
public class ReadExcelUtil<T> extends AnalysisEventListener <T>{

    public List<T> getAddList() {
        return addList;
    }

    public void setAddList(List<T> addList) {
        this.addList = addList;
    }

    List<T> addList = new ArrayList<>();


    /**
     * @Author caicai
     * @Description
     * @Date 15:25 
     * @Param [o 读取excel 一行的对象结果集, analysisContext]
     * @return void
     **/
    @Override
    public void invoke(T o, AnalysisContext analysisContext) {
        addList.add(o);
    }
    /**
     * @Author caicai
     * @Description 读取之后的回调操作操作
     * @Date 15:25 
     * @Param [analysisContext]
     * @return void
     **/
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {



    }
}

通用工具,我将对象封装一个泛型,来接受通用对象

此外还需要定义一个导入的表头类

表头类 定义


@Data

public class importExcelModel{
 //index 标识第几列的数据
@ExcelProperty(value = "姓名",index = 0)
    private String name;

@ExcelProperty(value = "年龄",index = 0)
    private String age;

}

调用编写


    @PostMapping("/import")
    public  String  batchInsert(@RequestParam("file") MultipartFile file,
                                      ) throws Exception {
        ReadExcelUtil<importExcelModel> readExcel = new ReadExcelUtil<importExcelModel>();
         EasyExcel.read(file.getInputStream(), importExcelModel.class,readExcel )
                 .sheet(0)
                 .doRead();
       //获取读取的excel对象
       List<importExcelModel> list =  readExcel .getAddList();
     
        return "获取数据成功!" ;
    }



posted @ 2022-07-04 17:50  菜菜920  阅读(1053)  评论(0编辑  收藏  举报