npoi 打开一个10多M的excel就内存溢出,求解决办法

问题描述

目前开发一个winfrom小程序使用npoi读取excel时,出现了内存溢出excel文件版本是2007的,大小是12MFileStreamfs_excel=newFileStream(this.excleFileDir,FileMode.Open,FileAccess.Read);IWorkbookworkbook=newXSSFWorkbook(fs_excel);

刚执行这两行就溢出了。。。因为其中有一个sheet是excel2007的最大行数,但我觉得不应该啊读取小的文件没问题,求解决办法

解决方案

本帖最后由 jjx0224 于 2014-04-10 15:58:37 编辑
解决方案二:
我的试过,有20M,6W行,可以的呀。
解决方案三:
引用1楼ycg_893的回复:

我的试过,有20M,6W行,可以的呀。

我这个就是不行呢,你的npoi的版本多少呢?主要是没什么数据,就是行数沾满了,有id号
解决方案四:
最新版,你是不是有什么其他操作,最好贴代码
解决方案五:
引用3楼ycg_893的回复:

最新版,你是不是有什么其他操作,最好贴代码

这个真没有,就两句话就挂了因为是2007,查看了下,有一个sheet页达到了100多W行,最大行数的,可能这个原因
解决方案六:
没遇这么多的数据,还有我想问下,大家在用NPOI的处理已经打开的Excel时候也会报错,NPOI是不是不能处理已经打开的Excel?
解决方案七:
引用5楼zyr987503101的回复:

没遇这么多的数据,还有我想问下,大家在用NPOI的处理已经打开的Excel时候也会报错,NPOI是不是不能处理已经打开的Excel?

这个可以的FileStreamfile=newFileStream(filePath,FileMode.Open,FileAccess.Read,FileShare.ReadWrite)
解决方案八:
你打开的文件后缀是xls还是xlsx?
解决方案九:
究竟有没有解决办法,也遇到这样的问题了,20W列20M的数据内存溢出
解决方案十:
引用7楼wow818wow的回复:

你打开的文件后缀是xls还是xlsx?

那么大的肯定是xlsx啊,xls只有6W列
解决方案十一:
对Excel的读写速度都比较一般可以的话,使用XML。
解决方案十二:
这个似乎没有什么很好的办法,肯定是会内存溢出的。npoi玩小文件没有问题,大文件就有问题的了。当然,跟硬件有关系,人家没事只是内存比你多而已。
解决方案十三:
如果对格式要求不高的话,用csv吧
解决方案十四:
引用12楼q3310017的回复:

如果对格式要求不高的话,用csv吧

我没什么好解决办法,后来就用csv了,100w以上也没压力

时间: 2024-09-19 20:59:21

npoi 打开一个10多M的excel就内存溢出,求解决办法的相关文章

关于C#中操作EXCEL后,关闭对象但EXCEL进程仍然存在的解决办法.

问题描述 自己之前一直被这个问题困扰,也在网上找了很多资料,大部分都是用杀死进程的方法来解决,个人觉得这个太影响代码美观了.今天偶然发现了解决办法.给大家共享一下.现象:我在C#中,需要从EXCEL导入或者导出数据,当导入导出结束后,使用excelApp.Quit()关闭EXCEL对象,但系统进程中仍然存在EXCEL进程.并没有关闭.原因:其实excelApp.Quit();方法是可以正确的释放EXCEL进程的,我们导入导出EXCEL时,普遍方法是代码后台处理,前台并隐藏EXCEL界面,也就是e

一个JSP页面导致的tomcat内存溢出的解决方法

 今天新能测试组的同事找我看一个奇怪的现象.一个tomcat应用,里面只有一个单纯的jsp页面,而且这个jsp页面没有任何java代码(想用这个jsp页面测试在她的服务器上的一个tomcat的最大QPS).但是用loadrunner压测了几分钟之后,分配了1024M堆内存的tomcat居然包heap space outofmemory!这个页面的代码如下:   代码如下: <%@ page language="java" contentType="text/html;

Excel求和产生误差的解决办法

  Excel是做财务报表少不了的帮手,不过偶尔要做精确的数据文件时,突然发现Excel出现误差那么该怎么解决?在财务工资表中,涉及到"工资税金"的计算问题,笔者依照"工资税金"的计算方法,制定出Excel的计算公式,根据每个职工的收入项进行相关的计算后,将运算结果自动填入到每个职工的"税金"单元格内.但在进行"税金栏目"纵向汇总求和时,却发现自动求和的结果比手工实际求和的结果多几分钱. Excel表格 经过分析发现,在用Ex

做excel导入时 内存溢出 求牛人指点

问题描述 现正在做excel导入功能 但是每次执行到book = Workbook.getWorkbook(theFile.getInputStream()); 这一步时 就出现内存溢出在网上搜索结果比较茫然, 症结在于 JVM内存太小通过tomcate statu 查看jvm内存:于是修改了 myeclipse 安装目录下的:eclipse.ini 文件 内容如下:-showsplashcom.genuitec.myeclipse.product--launcher.XXMaxPermSize

打开带有视频文件夹慢或文件夹无响应解决办法

  故障解析:出现这个现象通常可能会有2个原因: A.系统在安装了某些杀毒软件之后出现.部分杀毒软件的实时监控功能,当访问存在体积很大的压缩包或ISO文件的目录时,会自动解压这些文件进行扫描,对于一些配置较差的主机来说,就会导致速度缓慢.建议自行设置杀毒软件,关闭这一特性. B.未安装杀毒软件也会出现.XP有一项特性,是自动提取多媒体文件信息并进行为预览.,XP将自动扫描并读取这些文件的信息,并显示其缩略图或视频的第一个画面.如果你的某个文件夹下有大量或者体积很大或压缩率很高的视频文件(尤其是D

急求解决办法点击安钮不打开新窗口的方法

问题描述 各位大哥,小弟遇到一个很头痛的问题.事情是这样,我用ASP.NET做了一个小系统,下面是主界面的图片: 解决方案 解决方案二:看不到你的图片啊"点击安钮不打开新窗口"....?解决方案三:target="_self"在你的代码中加入这个属性--------------你问的问题十分不明确,看不到图片.

100分求读取Excel数据被截断的解决办法

问题描述 我读取Excel的数据时,直接填充返回DataSet,发现某些信息比较多的字段都自动被截断了,不知道这个问题怎么解决 解决方案 解决方案二:有用过我们公司封装的读取Excel方法.没具体源码不知道怎么处理的帮顶解决方案三:该回复于2010-12-02 16:03:30被版主删除解决方案四:了解一下,你是怎么读的?解决方案五:把你的代码贴上来解决方案六:你读取的是自己写的方法还是用的一个开源包啊?如果是开源包的话我这里有

打开Word时提示“无法注册这篇文档”的解决办法

如果DCOM Server Process Launcher服务被禁用,启动Word时将出现"无法注册这篇文档,不能创建从其它文档到这篇文档的链接"的提示框. 方法一: 1.单击左下角的"开始"按钮,弹出的菜单窗口单击"运行"命令 2.在打开的"运行",对话框中输入"services.msc"命令,单击"确定"打开本地服务设置 3.在服务(本地)的右侧窗口找到并双击打开"DCO

”一个封锁操作被对 WSACancelBlockingCall 的调用中断“。解决办法

问题描述: 为了防止界面卡死,在服务端我新开了一个进程来监听客户端的连接请求,在关闭的时候却却提示"一个封锁操作被对 WSACancelBlockingCall 的调用中断". 如图 具体错误代码:        private void InitForm()         {             MyController = new ControllerManager(this);   /创建一个新的进程,以防界面卡死             new Thread(MyCont