使用EasyExcel的AnalysisEventListener读取EXCEL

3,527 阅读1分钟

上传EXCEL是所有字段的实体对象

package com.example.demo;
public class SingleDialog {
    private String standard;
    private String similar;
    private String answer;

    public String getStandard() {
        return standard;
    }

    public void setStandard(String standard) {
        this.standard = standard;
    }

    public String getSimilar() {
        return similar;
    }

    public void setSimilar(String similar) {
        this.similar = similar;
    }

    public String getAnswer() {
        return answer;
    }

    public void setAnswer(String answer) {
        this.answer = answer;
    }
}

定义一个ExcelHander继承AnalysisEventListener 最重要的是重写invoke方法,去执行读EXCEL逻辑

package com.example.demo;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;

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

public class ExcelHander  extends AnalysisEventListener<SingleDialog> {
    private List SingleDialogs;

    public ExcelHander(List singleDialogs) {
        SingleDialogs = singleDialogs;
    }


    public void invoke(SingleDialog singleDialog, AnalysisContext analysisContext) {

        SingleDialogs.add(singleDialog);
    }

    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
       System.out.print("成功");
    }
}

调用逻辑

package com.example.demo;

import com.alibaba.excel.EasyExcel;

import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.*;
import java.util.*;

public class TranslateUtils {
    public static void main(String[] args) {
        translate("C:\\Desktop\\导出\\book.xls");
    }

    public static void translate(String path) {
        List<SingleDialog>singleDialogs=new ArrayList<SingleDialog>();
            ExcelHander handle=new ExcelHander(singleDialogs);
            FileInputStream  fs = new FileInputStream(new File(path));
            EasyExcel.read(fs,SingleDialog.class,handle).sheet("Sheet1").doRead();
            //读取成功
            System.out.println(singleDialogs.size())
    }

}