优化 Java poi 打开大文件速度
对于读取大文件时速度缓慢的情况,以下是采用 java poi 进行优化的两种方法:
方法一:
利用 xlsx-streamer
立即学习“Java免费学习笔记(深入)”;
xlsx-streamer 采用分段缓存方式加载数据,将大文件分段读取到内存中,避免一次性将整个文件加载到对象中,从而有效提升性能。
引入依赖:
<dependency> <groupid>com.monitorjbl</groupid> <artifactid>xlsx-streamer</artifactid> <version>2.1.0</version> </dependency>
示例代码:
public static void readlagerexcel(file file) throws exception { inputstream inputstream = new fileinputstream(file); try (workbook workbook = streamingreader.builder() .rowcachesize(10 * 10) .buffersize(1024 * 4) .open(inputstream)) { // ... } }
方法二:
采用 easyexcel
easyexcel 是基于 poi 封装优化的大数据量 excel 读写库,可以快速实现 excel 的读写,而且不会出现内存溢出问题。
引入依赖:
<dependency> <groupid>com.alibaba</groupid> <artifactid>easyexcel</artifactid> <version>3.1.0</version> </dependency>
示例代码:
public static void readexcelbyeasyexcel(file file) { list<exceldata> exceldatalist = easyexcel.read(file) .head(exceldata.class) .sheet(0) .doreadsync(); // ... }
不封装对象读取:
public static void readExcelByEasyExcel1(File file) { List<Map<Integer, String>> listMap = EasyExcel.read(file) .sheet(0) .doReadSync(); // ... }