一、实现EasyExcel对Excel读操作
1、创建实体类
import com.alibaba.excel.annotation.ExcelProperty;public class ReadData { //设置列对应的属性 @ExcelProperty(index = 0) private int sid; //设置列对应的属性 @ExcelProperty(index = 1) private String sname; public int getSid() { return sid; } public void setSid(int sid) { this.sid = sid; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } @Override public String toString() { return "ReadData{" + "sid=" + sid + ", sname='" + sname + '\'' + '}'; }}
2、创建读取操作的监听器
import com.alibaba.excel.context.AnalysisContext;import com.alibaba.excel.event.AnalysisEventListener;import com.alibaba.excel.exception.ExcelDataConvertException;import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;import java.util.ArrayList;import java.util.List;import java.util.Map;//创建读取excel监听器public class ExcelListener extends AnalysisEventListener<ReadData> { //创建list集合封装最终的数据 List<ReadData> list = new ArrayList<ReadData>(); //一行一行去读取excle内容 @Override public void invoke(ReadData user, AnalysisContext analysisContext) { System.out.println("***"+user); list.add(user); } //读取excel表头信息 @Override public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) { System.out.println("表头信息:"+headMap); } //读取完成后执行 @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { }}
3、调用实现最终的读取
public static void main(String[] args) throws Exception {
// 写法1:
String fileName = "F:\\01.xlsx";
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
EasyExcel.read(fileName, ReadData.class, new ExcelListener()).sheet().doRead();
// 写法2:
InputStream in = new BufferedInputStream(new FileInputStream("F:\\01.xlsx"));
ExcelReader excelReader = EasyExcel.read(in, ReadData.class, new ExcelListener()).build();
ReadSheet readSheet = EasyExcel.readSheet(0).build();
excelReader.read(readSheet);
// 这里千万别忘记关闭,读的时候会创建临时文件,到时磁盘会崩的
excelReader.finish();
}