springboot 整合 easyexcel 读取excel表格进行落库操作

我这里演示的是excel表格从上传,解析落库,自动转换成实体类,进行一个落库操作 boot版本用的是2.2.5.RELEASE
pom依赖

		 <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>2.2.6</version>
        </dependency>

实体类的编写

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;


@Data
@NoArgsConstructor
@AllArgsConstructor
public class Demo{
    
   
    @ExcelProperty(value = "12312")
    private String name;
   
    @ExcelProperty(value = "年龄")
    private String age;
     
  
    @ExcelProperty(value = "地址")
    private String address;
    
   /**
     * 电话
     */
    private String tel;


}


当上传的excel表格中没有这个某个字段时, @ExcelProperty 这个注解可写可不写,在落库时不会有任何的影响

@RestController
public class UploadController {

    @Resource
    private DemoService demoService;

    @PostMapping("/upload")
    public String uploadFile(@RequestParam("file") MultipartFile file) {
        // 对上传的文件进行处理
        if (!file.isEmpty()) {
            try {
            EasyExcel.read(file.getInputStream(), Demo.class, new ExcelDataListener(demoService)).sheet().doRead();
                return "Excel 文件解析成功!";
            } catch (Exception e) {
                return "Excel 文件解析失败:" + e.getMessage();
            }
        } else {
            return "上传的文件为空!";
        }
    }
}

在这要把这个service 加入ExcelDataListener 里面去才能 调用service层方法, 单独在类里面注入service 会注入失败

public class ExcelDataListener extends AnalysisEventListener<Demo> {


    public DemoService demoService;

    public ExcelDataListener() {
    }

    public ExcelDataListener(DemoService demoService) {
        this.demoService= demoService;
    }
    List<Demo> list = new ArrayList<>();

    @Override
    public void invoke(Demo dto, AnalysisContext context) {
        list.add(dto);
    }


    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        // 数据解析完成后的操作
		//调用service层的方法进行落库
        demoService.insertBatch(list);

    }
}

你可能感兴趣的:(spring,boot,excel,后端)