spring boot 集成 EsayExcel 实现excel的文件上传和下载

1:导入依赖

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

 实现文件上传:需要监听类

1:创建excel表的实体类

@Data
public class ReadData {
    // 设置列对应的属性
    @ExcelProperty(value = "学生编号",index = 0)
    private Integer no;
    @ExcelProperty(value = "学生姓名",index = 1)
    private String name;
}

2:controller写法

   /**
     * 上传execl文件,解析数据到数据库
     * @param file
     * @return
     */
    @ApiOperation("上传excel,解析excel接口")
    @PostMapping("uploadExcel")
    public R uploadExcel(MultipartFile file){
        eduSubjectService.uploadExcelFile(file);
        return R.ok();
    }

3: excel 读取数据的监听   主要是继承AnalysisEventListener<ReadData> 之后,重写invoke方法,然后在里面处理数据

public class ExcelListener extends AnalysisEventListener<ReadData> {

    List<ReadData> list = new ArrayList<ReadData>();

    // 一行一行去读取excel内容
    @Override
    public void invoke(ReadData readData, AnalysisContext analysisContext) {
        System.out.println(readData);
        list.add(readData);
    }

    // 读取excel表头信息
    @Override
    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
        System.out.println("表头信息:"+headMap);
    }


    // 读取完成后执行
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {

    }

}

文件下载

1:创建excel实体类

@Data
public class WriteData {
    // 设置表头属性名称
    @ExcelProperty("学生编号")
    private Integer no;
    @ExcelProperty("学生姓名")
    private String name;
}

2:测试写

public class TestExcelWriteData {
    public static void main(String[] args) {
        // 写法1
        String fileName = "D:\\excel\\11.xlsx";
        // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
        // 如果这里想使用03 则 传入excelType参数即可
        EasyExcel.write(fileName, WriteData.class).sheet("写入方法一").doWrite(data());
    }
    //循环设置要添加的数据,最终封装到list集合中
    private static List<WriteData> data() {
        List<WriteData> list = new ArrayList<WriteData>();
        for (int i = 0; i < 10; i++) {
            WriteData data = new WriteData();
            data.setNo(i);
            data.setName("张三"+i);
            list.add(data);
        }
        return list;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_39564710/article/details/113578278