Java 读取超大excel文件

news/2024/7/21 5:25:12 标签: java, excel, 开发语言

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

Maven

<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?


http://www.niftyadmin.cn/n/5292690.html

相关文章

EST-100身份证社保卡签批屏按捺终端PC版web版本http协议接口文档,支持web网页开发对接使用

<!DOCTYPE html><html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width,initial-scale1.0"><title>演示DEMO</title><script type"text/…

探索Apache Commons Imaging处理图像

第1章&#xff1a;引言 大家好&#xff0c;我是小黑&#xff0c;咱们今天来聊聊图像处理。在这个数字化日益增长的时代&#xff0c;图像处理已经成为了一个不可或缺的技能。不论是社交媒体上的照片编辑&#xff0c;还是专业领域的图像分析&#xff0c;图像处理无处不在。而作为…

JavaScript----获取标签元素

1. 获取标签元素 可以使用内置对象 document 上的 getElementById 方法来获取页面上设置了id属性的标签元素&#xff0c;获取到的是一个html对象&#xff0c;然后将它赋值给一个变量&#xff0c;比如&#xff1a; <script type"text/javascript">var oDiv d…

Linux中proc文件系统相关介绍

proc虚拟文件系统的工作原理 linux 内核是一个非常庞大、非常复杂的一个单独的程序&#xff0c;对于这样一个程序来说调试是非常复杂的。像kernel这样庞大的项目&#xff0c;给里面添加或者修改一个功能是非常麻烦的&#xff0c;因为添加一个功能可能会影响其他已经有的功能。…

mysql二进制对应ef中实体表字段类型

1、ef中设计成byte[],如下: /// <summary>/// 会员证/// </summary>public class MemberCard : AuditedEntity<Guid>{/// <summary>/// 企业id/// </summary>public Guid CompanyId { get; set; }/// <summary>/// 图片地址/// </summ…

node fs模块写入文件 writeFile、writeFileSync、fsPromises.writeFile、createWriteStream

文章目录 1.writeFile2.writeFileSync3.fsPromises.writeFile4.createWriteStream 1.writeFile 它是一个异步写入的方法 函数参数 file <string> | <Buffer> | <URL> | <integer> 文件名或文件描述符 data <string> | <Buffer> | <Typ…

GoLang学习之路,对Elasticsearch的使用,一文足以(包括泛型使用思想)(二)

书写上回&#xff0c;上回讲到&#xff0c;Elasticsearch的使用前提即&#xff1a;语法&#xff0c;表结构&#xff0c;使用类型结构等。要学这个必须要看前面这个&#xff1a;GoLang学习之路&#xff0c;对Elasticsearch的使用&#xff0c;一文足以&#xff08;包括泛型使用思…

183.【2023年华为OD机试真题(C卷)】敏感字段加密(动态规划dp实现JavaPythonC++JS)

请到本专栏顶置查阅最新的华为OD机试宝典 点击跳转到本专栏-算法之翼:华为OD机试 🚀你的旅程将在这里启航!本专栏所有题目均包含优质解题思路,高质量解题代码,详细代码讲解,助你深入学习,深度掌握! 文章目录 183.【2023年华为OD机试真题(C卷)】敏感字段加密(动…