关于Easy Excel的导入,简单入门级操做

1、导入pom依赖

<!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>2.0.5</version>
        </dependency>

2、建立监听器

package com.chcontrol.sysutil.excelutil;


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

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


/**
 * 解析监听器,
 * 每解析一行会回调invoke()方法。
 * 整个excel解析结束会执行doAfterAllAnalysed()方法
 *
 * @author Mr_Fei
 * @date 2019/11/19
 */
@Slf4j
@Getter
@Setter
public class ExcelListener extends AnalysisEventListener<Map<Integer, String>> {

    /**
     * 自定义存储表格数据
     */
    private List<Map<Integer, String>> dataList = new ArrayList<>();
    /**
     * 自定义存储标题结果
     */
    private Map<Integer, String> titleMap = new HashMap<>();

    @Override
    public void invoke(Map<Integer, String> result, AnalysisContext context) {
        //获取当前行号
        Integer rowIndex = context.readRowHolder().getRowIndex();
        if (rowIndex == 0) {
            this.titleMap = result;
        } else {
            //数据存储到list,供批量处理,或后续本身业务逻辑处理。
            dataList.add(result);
        }
        log.info("解析数据第{}行,数据为:{}", rowIndex, result);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        // list.clear();//解析结束销毁不用的资源
        log.info("解析完成!");
    }
}

3、使用示例

// 使用 示例
    public static void main(String[] args) {
        File file = new File("F:\\123.xlsx");
        //建立监听器
        ExcelListener excelListener = new ExcelListener();
        //这里 须要指定读用哪一个class去读,而后读取第一个sheet 文件流会自动关闭
        //若是是MultipartFile文件,file处使用multipartFile.getInputStream()
        //headRowNumber(0):表示从第0行开始读取。读取标题设置
        EasyExcelFactory.read(file, excelListener).sheet().headRowNumber(0).doRead();
        //获取数据内容
        List<Object> dataList = excelListener.getDataList();
        //获取标题内容
        List<Object> titleList = excelListener.getTitleList();
    }

注:在导入表格内容很少的状况下,使用该方法简单粗暴。但若是导入量大的状况下,能够在监听器中进行写库操做。java