Java 读取超大excel文件

注意:此参考解决方案只是针对xlsx格式的excel文件!

Maven

xml 复制代码
<dependency>
    <groupId>com.monitorjbl</groupId>
    <artifactId>xlsx-streamer</artifactId>
    <version>2.2.0</version>
</dependency>

读取方式1

java 复制代码
private static void readBigExcel(String filePath) throws FileNotFoundException {
    FileInputStream in = new FileInputStream(filePath);
    StreamingReader reader = StreamingReader.builder()
            .rowCacheSize(100)    // number of rows to keep in memory (defaults to 10)
            .bufferSize(4096)     // buffer size to use when reading InputStream to file (defaults to 1024)
            .sheetIndex(0)        // index of sheet to use (defaults to 0)
            .read(in);            // InputStream or File for XLSX file (required)

    for (Row r : reader) {
        for (Cell c : r) {
            System.out.print(c.getStringCellValue() + "  ");
        }
        System.out.println();
    }
}

读取方式2

java 复制代码
public static Workbook getStreamWorkbook(String filePath) throws FileNotFoundException {
    FileInputStream in = new FileInputStream(filePath);
    Workbook wk = StreamingReader.builder()
            .rowCacheSize(100)  //缓存到内存中的行数,默认是10
            .bufferSize(4096)   //读取资源时,缓存到内存的字节大小,默认是1024
            .open(in);          //打开资源,必须,可以是InputStream或者是File,注意:只能打开XLSX格式的文件
    return wk;
}

获取到Workbook后,余下读取cell方法参考 java 读取excel ,因为超大文件,所以只能使用for each循环方式遍历excel。

参考

Java中使用POI读取大的Excel文件或者输入流时发生out of memory异常参考解决方案
How to load a large xlsx file with Apache POI?

相关推荐
阿丘Akiu1 天前
Linux部署我的世界服务器
java
折哥的程序人生 · 物流技术专研1 天前
《Java面试85题图解版(二)》进阶深化中篇:Spring核心 + 数据库进阶
java·后端·spring·面试
叼烟扛炮1 天前
C++ 知识点17 友元
开发语言·c++·算法·友员
SamDeepThinking1 天前
写代码不考虑前后兼容,迟早要还的
java·后端·程序员
计算机安禾1 天前
【c++面向对象编程】第2篇:类与对象(一):定义第一个类——成员变量与成员函数
开发语言·c++
Dxy12393102161 天前
Python Pillow库:`img.format`与`img.mode`的区别详解
开发语言·python·pillow
亿牛云爬虫专家1 天前
深度解析:数据采集场景下的 Java 代理技术实战
java·开发语言·数据采集·动态ip·动态代理·代理配置·连接池复用
小小仙。1 天前
IT自学第四十二天
java·开发语言
java1234_小锋1 天前
说一下Spring的事务传播行为?
java·数据库·spring
庞轩px1 天前
第四篇:SpringBoot自动配置——约定大于配置的底层原理
java·spring boot·后端·spring·自动配置·注解开发