上代码
<dependency>
<groupId>io.github.magic-core</groupId>
<artifactId>excel-boot</artifactId>
<version>2.0</version>
</dependency>
//判断格式
String originalFilename = multipartFile.getOriginalFilename();
String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
if (Objects.isNull(suffix) || (!suffix.equals("xlsx") && suffix.equals("XLSX"))) {
return Result.createByErrorMessage("仅支持xlsx格式的文件");
}
List<ErrorEntity> list = new ArrayList<>();
try {
ExcelBoot.ImportBuilder(multipartFile.getInputStream(), InsertUserVO.class)
.importExcel(new ImportFunction<InsertUserVO>() {
/**
* @param sheetIndex 当前执行的Sheet的索引, 从1开始
* @param rowIndex 当前执行的行数, 从1开始
* @param userEntity Excel行数据的实体
*/
@Override
public void onProcess(int sheetIndex, int rowIndex, InsertUserVO userEntity) {
//将读取到Excel中每一行的userEntity数据进行自定义处理
//如果该行数据发生问题,将不会走本方法,而会走onError方法
GoodsUser goodsUser = GoodsUser.builder().guName(userEntity.getUserName()).guPhone(userEntity.getUserPhone())
.guAddress(userEntity.getAddress()).createBy(unsign.getUserId()+"").build();
int i = goodsUserMapper.insert(goodsUser);
}
// errorEntity 错误信息实体
@Override
public void onError(ErrorEntity errorEntity) {
list.add(errorEntity);
}
});
} catch (ExcelBootException excelBootException) {
log.error("错误:", excelBootException);
//手动回滚
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return Result.createByErrorMessage("导入失败,请选择对应的Excel");
}
if(list.size()!=0){
//手动回滚
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return Result.createByErrorData(list);
}
return Result.createBySuccessMessage("成功");
ok了 代码中报错的那些 是我项目中自己定义的实体类和mapper
这个方法也是在网上找的,时间有点长忘了博主是谁,勿怪勿怪