austinspark-jessylu
//监听器
@Slf4j
public class ExcelListener<T extends BaseRowModel> extends AnalysisEventListener<T> {
private final List<T> rows = new ArrayList<>();
private String departPro = "";
@Override
public void invoke(T object, AnalysisContext analysisContext) {
rows.add(object);
}

@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
log.info("read {} rows %n", rows.size());
}

public List<T> getRows() {
return rows;
}
}

//循环读取每一页,startNum 代表的是从第几行开始读ExcelUtil文件中
public static <T extends BaseRowModel> List<T> readExcel(final MultipartFile file,final Class<? extends BaseRowModel> clazz,int startNum) {
ExcelListener<T> listener = new ExcelListener<>();
try{
ExcelReader excelReader = EasyExcel.read(file.getInputStream()).build();
List<ReadSheet> readSheets = EasyExcel.read(file.getInputStream()).build().excelExecutor().sheetList();
if (!readSheets.isEmpty()) {
for (ReadSheet readSheet : readSheets) {
readSheet = EasyExcel.readSheet(readSheet.getSheetNo()).head(clazz).registerReadListener(listener).headRowNumber(startNum).build();
excelReader.read(readSheet);
}
}
excelReader.finish();
if (null == file.getInputStream()) {
throw new NullPointerException("the inputStream is null!");
}
}catch (Exception e){
log.error("读流出现异常:",e);
throw new BusinessException(BusinessCodeEnum.EXCEL_FILE_ILLEGA);
}
return listener.getRows();
}

//使用
List<User> list=ExcelUtil.readExcel(file,user.class,1);

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2021-12-04
  • 2022-01-20
  • 2022-12-23
  • 2021-08-04
  • 2022-12-23
  • 2021-11-24
  • 2021-11-17
猜你喜欢
  • 2021-12-20
  • 2022-12-23
  • 2021-11-20
  • 2021-05-07
  • 2021-12-29
  • 2021-06-25
  • 2022-12-23
相关资源
相似解决方案