背景介绍最近在生产环境中执行数据导入任务时,发现CPU异常升高的问题。通过多次定位发现,问题出在处理大型Excel文件时。通常使用的POI在处理大数据量的Excel文件(50MB或数十万行以上)时容易导致内存溢出或CPU飙升。值得注意的是,本文讨论的是针对XLSX格式的Excel文件。在Java技术生态圈中,主流的Excel处理技术包括Apache POI、JXL、阿里巴巴EasyExcel等。由于JXL仅支持Excel2003以下版本,因此在实际应用中较为罕见。Apache POI采用DOM方式解析,将文件直接加载到内存中,因此速度较快,适用于Excel文件数量较小的场景。阿里巴巴EasyExcel采用逐行读取的解析模式,通过观察者模式通知处理(AnalyEventListener),因此适用于解析数据量较大的Excel文件。场景再现与问题定位方面,使用POI时,由于将文件的所有内容加载到内存中,读取大型Excel文件容易占用大量内存,导致发生OOM。
解决Java处理大Excel文件内存溢出的高效工具
文件列表
快速、简洁、解决大文件内存溢出的java处理Excel工具 .rar
(预估有个623文件)
converterCsv.csv
1KB
simple.csv
113B
office_bom.csv
126B
no_bom.csv
123B
WriteTest.java
37KB
DataFormatter1.java
50KB
Lock2Test.java
18KB
FillStyleAnnotatedTest.java
18KB
FillStyleDataTest.java
19KB
.editorconfig
309B
暂无评论