如何优化Java POI读取大Excel文件的速度?

优化 java poi 打开大文件速度

对于读取大文件时速度缓慢的情况,以下是采用 java poi 进行优化的两种方法:

方法一:

利用 xlsx-streamer

xlsx-streamer 采用分段缓存方式加载数据,将大文件分段读取到内存中,避免一次性将整个文件加载到对象中,从而有效提升性能。

引入依赖:


    com.monitorjbl
    xlsx-streamer
    2.1.0

示例代码:

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 的读写,而且不会出现内存溢出问题。

引入依赖:


    com.alibaba
    easyexcel
    3.1.0

示例代码:

封装对象读取:

public static void readexcelbyeasyexcel(file file) {
    list exceldatalist = easyexcel.read(file)
            .head(exceldata.class)
            .sheet(0)
            .doreadsync();
    // ...
}

不封装对象读取:

public static void readExcelByEasyExcel1(File file) {
    List> listMap = EasyExcel.read(file)
            .sheet(0)
            .doReadSync();
    // ...
}