问题描述
目前开发一个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以上也没压力