实现层:
返回成功失败条数,原因
public String inportExcel(MultipartFile file) {
ImportExcelListener excelListener = new ImportExcelListener(budgetIssuedService, budgetIssuedRepository, year);
try {
EasyExcel.read(multipartFileToFile(file), AnnualBudgetExport.class, excelListener).headRowNumber(5).doReadAll();
} catch (Exception exception) {
return "数据格式异常";
}
return excelListener.message();
}
监听器:
@Data
public class ImportExcelListener extends AnalysisEventListener<AnnualBudgetExport> {
private final Logger log = LoggerFactory.getLogger(AnnualBudgetExport.class);
@Autowired
BudgetIssuedRepository budgetIssuedRepository;
List<AnnualBudgetExport> list = new ArrayList<>();
String type = "1";
int empty = 0;
int success = 0;
int error = 0;
Integer year;
BudgetIssuedService budgetIssuedService;
List<String> errmessage = new ArrayList<>();
public ImportExcelListener(BudgetIssuedService budgetIssuedService, BudgetIssuedRepository budgetIssuedRepository, Integer year) {
this.budgetIssuedService = budgetIssuedService;
this.budgetIssuedRepository = budgetIssuedRepository;
this.year = year;
}
@Override
public void invoke(AnnualBudgetExport simpleModel, AnalysisContext analysisContext) {
list.add(simpleModel);
if (list.size() >= 5) {
saveData();
list.clear();
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
saveData();
log.info("所有数据解析完成");
}
public void saveData() {
log.info("{}条数据,开始存储", list.size());
DecimalFormat df = new DecimalFormat("#.00");
for (AnnualBudgetExport bugget : list) {
//处理数据
try {
budgetIssuedService.addDeptBudget(bugget);
success++;
} catch (Exception e) {
error++;
errmessage.add(bugget.getThirdDep()+":"+e.getMessage());
}
}
}
public String message() {
if (error>0)
{
return String.format("成功:%d条 失败:%d条<br> 失败列表:<br>%s",success,error,StringUtils.join(errmessage,"<br>"));
}else if(error==0&&success==0){
return "不可导入空表";
}else
{
return null;
}
}
}
7082



被折叠的 条评论
为什么被折叠?



