Springboot整合easyExcel

Springboot整合easyExcel

  • 介绍
  • Entity实体类
  • 下载模板
  • 上传Excel文件
  • 上传Excel
  • 前端页面
  • 测试

介绍

平时工作中,我们经常都会用到excel文件上传或者下载的问题,比如将表数据导出为excel表格或者进行数据导入数据库等,本篇我们就介绍一下easyExcel进行操作Excel进行web的上传或者下载。

快速开始



    com.alibaba
    easyexcel
    3.1.1

Entity实体类

上传Excel的每个表格对应一行的一个cell,使用注解@ExcelProperty进行标注标题。

/**
 * 列信息实体类
 */
@Data
@TableName("ColumnEntity")
public class ColumnEntity {
    @TableId(value = "column_id", type = IdType.AUTO)
    @ExcelProperty(value="序号")
    private String columnId;
    //列名
    @ExcelProperty(value="列名")
    @TableField("column_name")
    private String columnName;
    //列注释
    @ExcelProperty(value="列注释")
    @TableField("column_desc")
    private String ColumnDesc;
    //类型
    @ExcelProperty(value="数据类型")
    @TableField("column_type")
    private String columnType;
    //长度
    @ExcelProperty(value="长度")
    @TableField("column_len")
    private String columnLen;
    //精度
    @ExcelProperty(value="精度")
    @TableField("precision")
    private String precision;
    //是否主键 Y true 都默认是主键
    @ExcelProperty(value="是否主键")
    @TableField("isPrimaryKey")
    private String isPrimaryKey;
    //是否允许为空 Y true 不允许为空
    @ExcelProperty(value="是否允许为空")
    @TableField("isNotNull")
    private String isNotNull;
    //是否索引列,方便进行生成建表语句的时候进行生成索引
    @ExcelProperty(value="是否索引列")
    @TableField("isIdxCol")
    private String isIdxCol;
}

下载模板

    /**
     * 下载excel模板
     */
    @GetMapping("/downLoadExcelTemplate")
    public void downLoadExcelTemplate(HttpServletResponse response) throws IOException {
        // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        response.setCharacterEncoding("utf-8");
        // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
        String fileName = URLEncoder.encode("实体类模板", "UTF-8").replaceAll("\\+", "%20");
        response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
        //空数据
        List columnEntityList = null;
        EasyExcel.write(response.getOutputStream(), ColumnEntity.class).sheet("创建实体类模板").doWrite(columnEntityList);
    }

上传Excel文件

上传Excel我们需要监听读取sheet,EasyExcel会自动解析文件,我们只需要对监听的行进行处理就ok。

监听类

/***
 * easyexcel监听类
 */
@Slf4j
public class ColumnListener implements ReadListener {

    /**
     * 这个每一条数据解析都会来调用
     *
     * @param o
     * @param analysisContext
     */
    @Override
    public void invoke(Object o, AnalysisContext analysisContext) {
        System.out.println(o.toString());
    }

    /**
     * 所有数据解析完成了 都会来调用
     * @param analysisContext
     */
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        //
        log.info("所有数据解析完成!");
    }
}

上传Excel

    /**
     * 文件上传
     * 

1. 创建excel对应的实体对象 参照{@link } *

2. 由于默认一行行的读取excel,所以需要创建excel一行一行的回调监听器,参照{@link } *

3. 直接读即可 */ @PostMapping("/uploadExcel") public String importData(MultipartFile file) throws IOException { EasyExcel.read(file.getInputStream(), ColumnEntity.class, new ColumnListener()).sheet().doRead(); return "success"; }

前端页面

前端主要使用elementui的上传文件组件进行上传。代码如下:




    
    excel上传下载管理














EasyExcel上传下载管理

下载excel模板 上传excel 点击上传
只能上传xls文件,且不超过500kb

测试

Springboot整合easyExcel_第1张图片
Springboot整合easyExcel_第2张图片
Springboot整合easyExcel_第3张图片
后台监听数据:
Springboot整合easyExcel_第4张图片

你可能感兴趣的:(springboot,spring,boot,java,后端,easyExcel)