导入导出

如何编写导入导出的业务代码,对EasyExcel做的简单封装。便于常用的业务导入导出代码编写。 适用版本:2.5.1

  1. 确保底层common-service 依赖在2.5.0以上
<!--微服务底层公用代码-->
    <dependency>
            <groupId>com.hvisions</groupId>
            <artifactId>hvisions-common-springboot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>
  1. 编写单独的导入类,因为导入的字段通常和前端交互的字段有所区别,最好单独创建
@Getter
@Setter
@ToString
public class UserExcel {
	/**
		* 名称(实体保存时会校验此字段,异常统一处理此信息)
		*/
	@ExcelProperty(value = "用户名")
	private String userName;
	/**
		* 描述
		*/
	@ExcelProperty(value = "描述")
	private String description;
	/**
		* 日期
		*/
	@ExcelProperty(value = "日期", converter = LocalDateConverter.class)
	private LocalDate date;
}
  1. 调用封装好的类,导入
   /**
     * 导入示例
     *
     * @param file 文件
     */
    @PostMapping("/import")
    @ApiOperation("导入")
    public void importExample(MultipartFile file) {
        List<UserExcel> data = EasyExcelUtil.getImport(file, UserExcel.class);
        for (UserExcel excel : data) {
            log.info(excel.toString());
        }
    }

    /**
     * 下载模板(给前端使用)
     *
     * @return 模板数据
     */
    @GetMapping("/getImportTemplate")
    @ApiOperation("导出模板")
    public ExcelExportDto getImportTemplateForFront() {
        //这里可以传入数据列表就是导出功能。
        List<UserExcel> excels = new ArrayList<>();
        UserExcel data = new UserExcel();
        data.setDate(LocalDate.now());
        data.setDescription("description");
        data.setUserName("用户1");
        excels.add(data);
        return EasyExcelUtil.getExcel(excels, UserExcel.class, "用户模板.xlsx");
    }

    /**
     * 下载模板(可以通过url直接下载)
     *
     * @return 模板
     */
    @GetMapping("/getImportTemplateUrl")
    @ApiOperation("导出模板")
    @ApiResultIgnore
    public ResponseEntity<byte[]> getImportTemplate() {
        //这里可以传入数据列表就是导出功能。
        List<UserExcel> excels = new ArrayList<>();
        UserExcel data = new UserExcel();
        data.setDate(LocalDate.now());
        data.setDescription("description");
        data.setUserName("用户1");
        excels.add(data);
        return EasyExcelUtil.getExcelResponse(excels, UserExcel.class, "users.xlsx");
    }
2023-09-15
1