直接上代码:
maven依赖
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-spring-boot-starter</artifactId>
<version>4.2.0</version>
</dependency>
controller:
@PostMapping("detail/import")
@ApiOperation("导入作业明细,返回id 列表")
public R<List<StandardDetail>> importDetail(@RequestPart MultipartFile file) throws Exception {
//导入的基本配置
ImportParams params = new ImportParams();
//代表导入这里是需要验证的(根据字段上的注解校验)
params.setNeedVerify(true);
//使用框架自身导入工具
ExcelImportResult<StandardDetailDto> result =
ExcelImportUtil.importExcelMore(file.getInputStream(), StandardDetailDto.class, params);
//导入成功的数据
List<StandardDetailDto> list = result.getList();
//失败结果集
List<StandardDetailDto> failList = result.getFailList();
boolean verifyFail = result.isVerifyFail();
if (verifyFail) {
String message = generateFailMessage(failList);
return R.failed(message);
}
List<StandardDetail> detailList = planStandardService.saveDetailBatch(list);
return R.ok(detailList);
}
DTO类型
/**
* dto,注意实现 IExcelModel, IExcelDataModel 接口,用于异常输出
*/
@Data
@ApiModel(description = "dto")
public class StandardDetailDto implements IExcelModel, IExcelDataModel {
private Long id;
/**
* 名称
*/
@ApiModelProperty("名称")
@NotBlank
@Pattern(regexp = NAME_REGEX, message = NAME_ERROR)
@Excel(name = "作业明细名称")
private String name;
/**
* 内容
*/
@ApiModelProperty("内容, 200字以内")
@NotBlank
@Size(max = 200)
@Excel(name = "内容事项")
private String content;
/**
* 是否上传照片,0不上传,1上传
*/
@ApiModelProperty("是否上传照片,0不上传,1上传")
@Excel(name = "是否上传照片", replace = {"是_1", "否_0"})
@NotNull
private Integer imageType;
private String errorMsg;
private Integer rowNum;
}
网友评论