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?

相关推荐
阿正的梦工坊1 天前
JavaScript 微任务与宏任务完全指南
开发语言·javascript·ecmascript
chools1 天前
【AI超级智能体】快速搞懂工具调用Tool Calling 和 MCP协议
java·人工智能·学习·ai
知行合一。。。1 天前
Python--05--面向对象(属性,方法)
android·开发语言·python
李白你好1 天前
TongWeb EJB 反序列化生成工具(Java-Chain 插件)
java·安全
青梅橘子皮1 天前
C语言---指针的应用以及一些面试题
c语言·开发语言·算法
浅时光_c1 天前
3 shell脚本编程
linux·开发语言·bash
Evand J1 天前
【三维轨迹目标定位,CKF+RTS,MATLAB程序】基于CKF与RTS平滑的三维非线性目标跟踪(距离+方位角+俯仰角)
开发语言·matlab·目标跟踪
U盘失踪了1 天前
Java 的 JAR 是什么?
java·jar
今天又在写代码1 天前
java-v2
java·开发语言
competes1 天前
慈善基金投资底层逻辑应用 顶层代码低代码配置平台开发结构方式数据存储模块
java·开发语言·数据库·windows·sql