SpringBoot+EasyPoi实现导入导出

407 阅读1分钟

1.引入依赖

<dependency>
    <groupId>cn.afterturn</groupId>
    <artifactId>easypoi-spring-boot-starter</artifactId>
    <version>4.4.0</version>
</dependency>

2.给实体类加注解

public class EduTeacher extends Model<EduTeacher> {
    //讲师ID
    @Excel(name = "id",width = 10)
    private String id;
    //讲师姓名
    @Excel(name = "讲师姓名",width = 20)
    private String name;
    //讲师简介
    @Excel(name = "讲师简介",width = 20)
    private String intro;
    //讲师资历,一句话说明讲师
    @Excel(name = "讲师资历",width = 20)
    private String career;
    //头衔 1高级讲师 2首席讲师
    @Excel(name = "头衔",width = 20 ,replace={"高级讲师_1","首席讲师_2"})
    private Integer level;
    //讲师头像
    @Excel(name = "讲师头像",width = 40)
    private String avatar;
    //排序
    private Integer sort;
    //逻辑删除 1(true)已删除, 0(false)未删除
    private Integer isDeleted;
    //创建时间
    @Excel(name = "创建时间",width = 40, format = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private Date gmtCreate;
    //更新时间
    @Excel(name = "更新时间",width = 40, format = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date gmtModified;
    }

注解说明:

  • name:Excel中的列名;
  • width:指定列的宽度;
  • needMerge:是否需要纵向合并单元格;
  • format:当属性为时间类型时,设置时间的导出导出格式;
  • desensitizationRule:数据脱敏处理,3_4表示只显示字符串的前3位和后4位,其他为*号;
  • replace:对属性进行替换;
  • suffix:对数据添加后缀。

3.导出功能具体实现

@GetMapping("testExport")
public void export(ModelMap map,HttpServletRequest request,HttpServletResponse response){
    List<EduTeacher> eduTeacherList = eduTeacherService.list(new QueryWrapper<>());
    ExportParams params = new ExportParams("讲师列表", "讲师列表", ExcelType.XSSF);
    map.put(NormalExcelConstants.DATA_LIST, eduTeacherList);
    map.put(NormalExcelConstants.CLASS, EduTeacher.class);
    map.put(NormalExcelConstants.PARAMS, params);
    map.put(NormalExcelConstants.FILE_NAME, "memberList");
    PoiBaseView.render(map, request, response, NormalExcelConstants.EASYPOI_EXCEL_VIEW);
}

4.导入功能

@RequestMapping(value = "/importMemberList", method = RequestMethod.POST)
@ResponseBody
public R importMemberList(@RequestPart("file") MultipartFile file) {
    ImportParams params = new ImportParams();
    params.setTitleRows(1);
    params.setHeadRows(1);
    try {
        List<EduTeacher> list = ExcelImportUtil.importExcel(
                file.getInputStream(),
                EduTeacher.class, params);
        eduTeacherService.saveBatch(list);
        return success(list);
    } catch (Exception e) {
        e.printStackTrace();
        return R.failed("导入失败!");
    }
}