springboot整合easyExcel的全流程,跟着做就能出来。对项目没有侵入要求。0侵入,可插拔
依赖
<!--操作Excel依赖--><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.1</version></dependency>
配置文件没有,不用操心这个
准备工作
一张excel表+一个实体类
@Data
@ColumnWidth(20)
public class area {@ExcelProperty(value = "id",index = 0)private int id;@ExcelProperty(value = "姓名",index = 1)private String name;
}
读excel的流程之 创建
AnalysisEventListener监听器,读到数据,封装成area对象后会触发这个invoke方法。
@Slf4j
public class areaReadListener extends AnalysisEventListener<area> {// 每读一次,会调用该invoke方法一次,就是想对获取到的数据进行什么操作@Overridepublic void invoke(area data, AnalysisContext context) {System.out.println("data = " + data);log.info(data + "保存成功");}// 全部读完之后,会调用该方法(这个暂时用不到)@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {// TODO......}
}
开始读文件
@Testpublic void test05() {/*** Build excel the read 构建一个读的工作簿** @param pathName 读文件的路径* File path to read.* @param head 每一行数据存储的到的实体类的类型的class* Annotate the class for configuration information.* @param readListener 监听器 没读一行内容都会调用该对象的invoke,在invoke可以操作使用读取到的数据* Read listener.* @return Excel reader builder.*/
// 获取工作簿对象 excel文件位置 最后一个参数是监听器类ExcelReaderBuilder readWorkBook = EasyExcel.read("D:\\B-project\\springboot-mybatis\\src\\main\\java\\com\\example\\springmybatis\\area.xlsx", area.class, new areaReadListener());
// 获取工作表对象ExcelReaderSheetBuilder sheet = readWorkBook.sheet();
// 读取表中的内容sheet.doRead();}
开始写文件
getdata 方法生成数据,
sheet.doWrite(areaList); 写入方法填入数据集合,完成写入
public static List<area> getdata() {ArrayList<area> list = new ArrayList<>();for (int i = 0; i < 10; i++) {area area = new area();area.setId(i);area.setName("测试"+i);list.add(area);}return list;}@Testpublic void test02(){ExcelWriterBuilder writeWorkBook = EasyExcel.write("D:\\B-project\\springboot-mybatis\\src\\main\\java\\com\\example\\springmybatis\\area.xlsx", area.class);ExcelWriterSheetBuilder sheet = writeWorkBook.sheet();//doWrite(initData()之前提前加入的生成数据的方法。List<area> areaList = getdata();sheet.doWrite(areaList);}