爷的眼睛闪亮
insideDotNet En_summerGarden
随笔 - 670,  文章 - 0,  评论 - 53,  阅读 - 191万
//监听器
@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);
posted on   爷的眼睛闪亮  阅读(2672)  评论(1编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
历史上的今天:
2017-08-30 Java三大器之过滤器(Filter)的工作原理和代码演示
2017-08-30 Java三大器之监听器(Listener)的工作原理和代码演示
2017-08-30 Java三大器之拦截器(Interceptor)的实现原理及代码示例
2016-08-30 java对象和json对象之间互相转换

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示