导入导出
如何编写导入导出的业务代码,对EasyExcel做的简单封装。便于常用的业务导入导出代码编写。
适用版本:2.5.1
- 确保底层common-service 依赖在2.5.0以上
<!--微服务底层公用代码-->
<dependency>
<groupId>com.hvisions</groupId>
<artifactId>hvisions-common-springboot-starter</artifactId>
<version>3.5.1</version>
</dependency>
- 编写单独的导入类,因为导入的字段通常和前端交互的字段有所区别,最好单独创建
@Getter
@Setter
@ToString
public class UserExcel {
/**
* 名称(实体保存时会校验此字段,异常统一处理此信息)
*/
@ExcelProperty(value = "用户名")
private String userName;
/**
* 描述
*/
@ExcelProperty(value = "描述")
private String description;
/**
* 日期
*/
@ExcelProperty(value = "日期", converter = LocalDateConverter.class)
private LocalDate date;
}
- 调用封装好的类,导入
/**
* 导入示例
*
* @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");
}