SuperAPI AI 工具集

easyexcel-read

办公与效率

查看项目

更新于 10-16 08:47

技能介绍

用途:专注 Java 中读取 Excel 数据,适用于导入数据、批量入库、对账文件解析、用户上传文件解析等场景,将 .xlsx/.xls 读为 Java 对象或 Map。依赖 com.alibaba:easyexcel:4.0.3(Apache-2.0,仓库已归档,仅做 Bug 修复)。

主要能力:监听器模式(流式,大文件不易 OOM);同步读取 doReadSync()(小文件一次性返回 List);多 Sheet 读取(全部 doReadAll() 或部分 ExcelReader.read(readSheet1, readSheet2));多行表头 headRowNumber;自定义转换器(日期/数字/枚举);行级异常处理;额外信息读取(批注 COMMENT、超链接 HYPERLINK、合并单元格 MERGE);公式与单元格原始类型;不创建对象直接读 Map;Web 上传文件读取。

使用方式:定义 DTO 并标注 @ExcelProperty,选择读取方式后执行。典型写法包括 PageReadListener(默认每次读取 100 条)、匿名或自定义 ReadListener、ExcelReader(一个文件一个 reader)。监听器需实现 invoke、doAfterAllAnalysed,可选 onException、invokeHead、extra。批量入库建议每 2000 行保存一次,并在 doAfterAllAnalysed 处理最后一批。

限制:监听器不能被 Spring 管理,必须 new,Spring Bean 需通过构造方法传入;一个 sheet 不能重复读取,多次读取需重新构造 reader;03 版多 sheet 一次性传入以避免重复解析;headRowNumber 不指定时按 @ExcelProperty#value() 表头数量推断;doReadSync() 不推荐大数据量。

不适用场景:按预制模板填充用 easyexcel-fill;程序化生成 Excel 用 easyexcel-write;CSV 可用 commons-csv/OpenCSV(EasyExcel 也支持,需 excelType(CSV));Word/PPT 用 Apache POI。本技能不收集、存储或传输任何用户数据。