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方法一次,就是想对获取到的数据进行什么操作
- @Override
- public void invoke(area data, AnalysisContext context) {
- System.out.println("data = " + data);
- log.info(data + "保存成功");
- }
-
- // 全部读完之后,会调用该方法(这个暂时用不到)
- @Override
- public void doAfterAllAnalysed(AnalysisContext context) {
- // TODO......
- }
- }
- @Test
- public 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;
- }
- @Test
- public 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);
- }