EasyExcel 官方文档: https://easyexcel.opensource.alibaba.com/docs/current/
两种读对象的方式:
确定表头:建立对象,和表头形成映射关系
不确定表头:每一行数据映射为 Map<String, Object>
两种读取模式:
监听器:先创建监听器、在读取文件时绑定监听器。单独抽离处理逻辑,代码清晰易于维护;一条一条处理,适用于数据量大的场景。
同步读:无需创建监听器,一次性获取完整数据。方便简单,但是数据量大时会有等待时常,也可能内存溢出。
添加EasyExcel步骤:
1.添加依赖 1 2 3 4 5 6 <!-- https: <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>3.1 .0 </version> </dependency>
2.定义读的对象 1 2 3 4 5 6 7 8 9 10 11 12 13 14 @Data public class XingQiuTableUserInfo { @ExcelProperty("成员编号") private String planetCode; @ExcelProperty("成员昵称") private String username; }
同步读取数据的方式 1 2 3 4 5 6 7 8 9 10 11 12 public static void synchronousRead (String fileName) { String fileName = "E:\\yupi\\星球项目\\yupao- backend\\src\\main\\resources\\testExcle.xlsx" ; List<XingQiuTableUserInfo> totalDataList = EasyExcel.read(fileName).head(XingQiuTableUserInfo.class).sheet().doReadSync(); for (XingQiuTableUserInfo xingQiuTableUserInfo : totalDataList) { System.out.println(xingQiuTableUserInfo); } }
(1)定义一个主类启动即可 1 2 3 public static void main (String[] args) { synchronousRead(fileName); }
采用监听器的方式读取数据 (1)定义一个监听器 tableListener 类 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 @Slf4j public class TableListener implements ReadListener <XingQiuTableUserInfo> { @Override public void invoke (XingQiuTableUserInfo data, AnalysisContext context) { System.out.println(data); } @Override public void doAfterAllAnalysed (AnalysisContext context) { System.out.println("已解析完成" ); } }
(2)封装为方法 readByListener 1 2 3 4 5 6 7 8 private static void readByListener (String fileName) { String fileName = "E:\\yupi\\星球项目\\yupao-backend\\src\\main\\resources\\testExcle.xlsx" ; EasyExcel.read(fileName, XingQiuTableUserInfo.class, new TableListener ()).sheet().doRead(); }
(3)定义一个主类启动即可 1 2 3 public static void main (String[] args) { readByListener(fileName); }