Java读取Excel文件_详细可执行_低内存占用
EasyExcel介绍:高效内存友好Java Excel处理工具,轻松应对大文件
EasyExcel是一个基于Java的、快速且简洁的Excel处理工具,专为解决大文件内存溢出问题设计。与传统的Excel处理框架如Apache POI和jxl相比,它显著降低了内存消耗。例如,一个3M大小的Excel文件使用POI SAX模式解析时可能需要100M左右的内存,而用EasyExcel仅需几M,并且对于更大的文件也不会出现内存溢出的问题。此外,EasyExcel还优化了07版Excel的解压缩过程,进一步减少了内存占用。通过重写解析逻辑并采用SAX模型转换封装,EasyExcel在保持高性能的同时简化了开发者的使用难度。
EasyExcel实战:高效读取Excel文件攻略
使用easyexcel 读取 excel的案例
具体步骤
以下是一个详细的使用EasyExcel读取Excel文件的过程示例,包括基础配置及代码实现:
步骤0:pom依赖
依赖easyexcel pom
<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.10</version></dependency>
步骤1:定义实体类
首先需要创建一个与Excel表格结构对应的Java实体类,用于映射每一行的数据。这里以一个简单的例子说明:
import com.alibaba.excel.annotation.ExcelProperty;public class DemoData {@ExcelProperty("姓名")private String name;@ExcelProperty("年龄")private int age;// Getters and Setters
}
步骤2:编写数据监听器
接下来,实现AnalysisEventListener
接口来自定义数据处理器,该处理器会在每解析一行数据时被调用。
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;import java.util.ArrayList;
import java.util.List;public class DemoDataListener extends AnalysisEventListener<DemoData> {private List<DemoData> list = new ArrayList<>();@Overridepublic void invoke(DemoData data, AnalysisContext context) {list.add(data);}@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {System.out.println("所有数据解析完成!");}public List<DemoData> getDataList() {return list;}
}
步骤3:设置并执行读取操作
最后,在主程序中设置EasyExcel的相关参数(如是否开启缓存机制等),然后启动读取过程。
import com.alibaba.excel.EasyExcel;public class ExcelReaderDemo {public static void main(String[] args) {String fileName = "path/to/your/excel/file.xlsx";// 默认情况下,对于大文件,EasyExcel会自动判断并采用合理的策略来处理共享字符串。// 如果想要自定义设置,则可以通过readCacheSelector方法进行调整。// 示例中使用默认设置。EasyExcel.read(fileName, DemoData.class, new DemoDataListener()).sheet().doRead();}
}
对上述具体步骤的解释
- 实体类:用来描述Excel中每个单元格对应的数据类型,确保读入的数据能够正确地转换成相应的Java对象。
- 监听器:作为回调函数,当EasyExcel解析到新的数据行时就会触发该监听器中的逻辑。用户可以在其中实现具体的业务逻辑,比如将数据保存到数据库或者直接打印出来。
- 读取配置与执行:提供了灵活的方式来定制读取行为,包括但不限于控制共享字符串的处理方式。如果只是常规用途,通常不需要特别调整,默认配置已经足够满足大多数需求。
通过以上步骤,您可以有效地使用EasyExcel框架来处理各种大小的Excel文件读取任务。