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

一、导入pom依赖

  
        
            com.alibaba
            easyexcel
            2.0.5
        

二、创建监听器

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> {

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

    @Override
    public void invoke(Map 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("解析完成!");
    }
}

三、使用示例

    // 使用 示例
    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 dataList = excelListener.getDataList();
        //获取标题内容
        List titleList = excelListener.getTitleList();
    } 
  

注:在导入表格内容不多的情况下,使用该方法简单粗暴。但如果导入量大的情况下,可以在监听器中进行写库操作。

 

你可能感兴趣的:(框架笔记)