/**
* When opening a workbook, either a .xls HSSFWorkbook, or a .xlsx
* XSSFWorkbook, the Workbook can be loaded from either a File or an
* InputStream. Using a File object allows for lower memory consumption,
* while an InputStream requires more memory as it has to buffer the
* whole file.
* new File会节省内存,new FileInputStream会占用较大内存
* If using WorkbookFactory, it's very easy to use one or the other:
*/
// 第一种读取方式 Use a file
Workbook wb = WorkbookFactory.create(new File("MyExcel.xls"));
//第二种读取方式 Use an InputStream, needs more memory
Workbook wb0 = WorkbookFactory.create(new FileInputStream(
"MyExcel.xlsx"));
/**
* If using HSSFWorkbook or XSSFWorkbook directly, you should generally
* go through NPOIFSFileSystem or OPCPackage, to have full control of
* the lifecycle (including closing the file when done):
* 如果直接用HSSFWorkbook or XSSFWorkbook ,你需要显式关闭文件
*/
//第三种读取方式 HSSFWorkbook, File
NPOIFSFileSystem fs = new NPOIFSFileSystem(new File("file.xls"));
HSSFWorkbook wb1 = new HSSFWorkbook(fs.getRoot(), true);
fs.close();
//第四种读取方式 HSSFWorkbook, InputStream, needs more memory
NPOIFSFileSystem fs1 = new NPOIFSFileSystem(new FileInputStream(
"MyExcel.xlsx"));
HSSFWorkbook wb2 = new HSSFWorkbook(fs.getRoot(), true);
//第五种读取方式 XSSFWorkbook, File
OPCPackage pkg = OPCPackage.open(new File("file.xlsx"));
XSSFWorkbook wb3 = new XSSFWorkbook(pkg);
pkg.close();
//第六种读取方式 XSSFWorkbook, InputStream, needs more memory
OPCPackage pkg1 = OPCPackage.open(new FileInputStream("MyExcel.xlsx"));
XSSFWorkbook wb4 = new XSSFWorkbook(pkg);
pkg1.close();
总结:总共有6种方式创建读取的Excel对应,new File的方式较省内存,new InputStream的方式较耗内存
相关推荐
poi读取excel 内存出现溢出问题
针对读取、生成excel内存溢出问题,包括工具类和具体的实现
Apache的poi使用WorkbookFactory.create读取Excel文件效率慢问题
WorkbookFactory.create方法可以读取XLS和XLSX文件,而不用担心版本问题。 使用读取文件方式创建Workbook发现读取速度非常慢,内存占用小 WorkbookFactory.create(File) 使用读取流方式创建Workbook读取速度快,内存占用大 WorkbookFactory.create(InputStream) ...
若依前后端分离版实战:MQTT集成保姆级教程(含MQTTX测试工具使用)
本文详细介绍了在若依前后端分离架构中集成MQTT协议的完整流程,包括环境搭建、核心配置、安全实践及性能优化。通过MQTTX测试工具的使用和实战代码示例,帮助开发者快速实现物联网场景下的实时通信功能,提升系统稳定性和效率。
Excel导入导出源码分析
导入导出源码
修复zookeeper未授权访问漏洞
【代码】修复zookeeper未授权访问漏洞。
LAMMPS实战指南 - 从in文件到分子动力学模拟的完整流程解析
本文详细解析了LAMMPS分子动力学模拟的完整流程,从理解in文件的核心作用与基础结构开始,逐步指导如何创建模拟体系、选择势函数、进行能量最小化与初始化,并深入讲解了NVT/NPT系综弛豫与生产模拟的关键步骤。文章还提供了常见问题的避坑指南与实战技巧,帮助初学者快速掌握从编写in文件到成功运行模拟的全过程。
java处理excel-xlsx格式大文件的解决方案
1、第一次读取7M左右的ecxel文件,使用poi 库实现,参考了下面的博文。 http://www.cnblogs.com/chenfool/p/3632642.html 使用上面的方法在 下面WorkbookFactory.create()这里会出现内存溢出的错误,将eclipse的参数调整为-Xmx3072m,仍然会出现这个错误。 fis = new FileI...
FPGA实战:MIG IP核AXI接口DDR3读写优化指南
本文详细解析了FPGA中MIG IP核AXI接口的DDR3读写优化策略,涵盖关键参数配置、突发传输技巧及时序收敛方案。通过AXI接口优化和突发长度选择,可实现高达12.8GB/s的理论带宽,提升DDR3访问效率。文章还提供了Vivado配置实例和调试技巧,助力开发者解决FPGA内存控制中的实际问题。
Java使用xlsx-streamer和EasyExcel解决读取超大excel数据时OutOfMemoryError的问题
最近有个项目在生产环境做数据导入时,发现开始执行导入任务会出现cpu狂飙的情况。几番定位查找发现是在读取excel的时候导致此问题的发生,因此在通常使用的为POI的普通读取,在遇到大数据量excel,50mb一行或数十万行的级别的数据容易导致读取时内存溢出或者cpu飙升。以及解决Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded
手把手教你用CANape调试XCP安全会话:DLL权限管理+四种加密模式实战演示
本文详细介绍了如何使用CANape调试XCP安全会话,重点解析了DLL权限管理的实现与配置方法,并通过实战演示了标定页切换、DAQ测量、STIM旁路和PGM刷写四种典型加密模式的操作流程与调试技巧,帮助工程师深入理解并掌握XCP安全访问机制。
ET篇:Google.Protobuf的学习(理解基本的使用流程)
据我目前所知,ET使用的数据交换协议是Google.Protobuf,所以今天就来学习一下,但是网上许多人都是以高下立判的方式讲解的,对新手小白很不友好,所以我今天就以纯小白的视角和大家一起学习 学习环境: .NET Core2.2 .NET Framework 4.7.2 Rider protobuf-csharp-3.7.0-rc-2 Google.Protobuf简介 prot...
线上故障之-内存问题
线上故障之-内存问题内存概述内存泄漏(Memory Leak)JAVA中的内存泄露:常见的容易导致内存泄露的点内存溢出(Out Of Memory)模拟内存溢出工具 内存概述 内存泄漏(Memory Leak) 是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。 一般内存泄露的方式: 常发性内存泄漏:发生内存泄漏的代码会被多次执行到,每次被执行时都会导致一块内存泄漏。 偶发性内存泄漏:发生内存泄漏的代码只有在某些特定环境或操作过程
Flow Matching实战:5步搞定图像生成模型优化(附PyTorch代码)
本文提供了一份基于Flow Matching框架优化图像生成模型的实战指南。通过五个关键步骤,详细讲解了从环境配置、核心概念梳理到构建向量场网络、设计损失函数、编写训练循环以及选择ODE求解器进行采样的完整流程,并附有可运行的PyTorch代码,帮助开发者快速掌握这一高效的生成式建模技术。
记录POI方式如何读取excel文档单元格数据
1. 先上一段代码 public String importExcelFile(MultipartFile file) throws IOException { int startRow = 0; int count = 0; if (file.isEmpty()) { throw new MyException(MyCodeEnum.PARAMETER_ERROR,"上传的文件不能为空"); } In
Jetbrains IDE 配置上Gemini Code 插件,让你的的编程高效起飞~
Gemini Code Assist是 Google 家产品,基座模型为最新的Gemini 2.5 Pro。本篇实践了在 WebStrom 中Gemini Code Assist插件的高效编程。
ET2012新版免狗免安装绿色软件
ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,
使用Easy poi导入数据时特别慢的问题汇总
使用Easy Poi导入Excel时特别慢 问题描述: 在使用easy poi导入一个5000多行的excel时特别慢,大概需要5~6分钟,经过查看源码,发现了问题并已经解决,现在记录一下 依赖 <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-base</artifactId> &l
Statistics and Machine Learning Toolbox
Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具
java web运行缓慢_Java Web Start导致执行缓慢
我有一个要与Java Web Start一起部署的应用程序.在进行单元测试时,我注意到一个小问题:每当我的应用程序使用Java Web Start运行时,执行特定操作的时间就很长.但是,在本地运行时,速度非常快.我正在谈论的特定操作是读取一个大的(5k行)Excel文件以对其进行解析.这是代码行:Workbook wb = WorkbookFactory.create(new FileInputS...
复分析 阿尔福斯(Ahlfors) 第三版答案 英文
答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案
文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况
主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。
POI 读取excel大量数据方法
今天在做excel文件上传时,发现数据量超过10万条后,系统会出现内存溢出。 跟踪代码发现程序卡在如下中 Workbook workbook=WorkbookFactory.create(new File(path)); 通过poi的api发现此方法属于能对excel读写,但是内存消耗大,速度较慢。 在poi的官方文档中找到了读取大量数据的方法,但只能读数据,不能进行写操作。 代码整...
WorkbookFactory.create(InputStream)的使用
因为excel格式有两种,一种就是xls,一种就是xlsx,如果我们需要解析excel,以前的方法是 String fileName = file.getOriginalFilename(); 先获取文件名,然后在判断他是什么的后缀名,在根据HSSFWorkbook 或者 XSSFWorkbook 得到 workbook 对象 现在有了WorkbookFactory.create(InputS...
彻底解决POI 读写excel 发生OOM问题
说实话之前之前没怎么接触过POI组件,只知道有这么一个东西可以解决excel读写问题,但不用不知道,使用起来真心无语,到处都是坑。接下来我讲分享一些在项目中遇到的坑及解决方法,其实社区也有不少类似文章,但讲的都比较零散。 1..xls与.xlsx 首先,科普一些基础常识: .xls 是用03版Office Excel ,新建Excel默认保存的Excel文件格式的后缀是.xls,不可以打开...
关于java读取Excel ,最简单,最好理解兼容性强的 WorkbookFactory 方式
假如我们现在要用java读取这样一个excel: 直接上代码: package com.util; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.text.DecimalFormat; import java.util.ArrayList; imp...
poi读取excel
poi读取excel Workbook workbook = WorkbookFactory.create(InputStream); poi写出excel workbook.write(OutputStream); poi获取行数 sheet.getLastRowNum()+1 poi获取列数 sheet.getRow(0).getPhysicalNumberOfCells() poi获取单元格值 public Object getCellValue(Cell cell) { if (cell ==
java workbookfactory_EXCEL解析之终极方法WorkbookFactory
Selenium做自动化测试当然不能避免和Excel打交道。由于Excel版本的关系,文件扩展名分xls和xlsx,以往的经验都是使用HSSFWorkbook和XSSFWorkbook来分别处理。具体的方式就是先判断文件的类型,然后根据文件扩展名来选择方法。大概处理方式如下:String extention= getExtention(path);if (!EMPTY.equals(extenti...
6352



被折叠的 条评论
为什么被折叠?



