内存溢出~

dpcrman1987 2011-11-04 05:34:05
小弟通过框架的方法得到4张DataTable然后导出到Excel里

6W条数据还是可以的,但是10W条数据后就会报内存溢出错误

请大家帮分析下可能出错的地方

...全文
327 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
cjnkd 2011-11-09
  • 打赏
  • 举报
回复
关注一下
山东蓝鸟贵薪 2011-11-09
  • 打赏
  • 举报
回复
建议将错误信息传上看看吧
ZhangNan20100811 2011-11-09
  • 打赏
  • 举报
回复
内存溢出,断点调试看看...
dpcrman1987 2011-11-07
  • 打赏
  • 举报
回复
Excel 导出后内存依然没有消失啊
山东蓝鸟贵薪 2011-11-07
  • 打赏
  • 举报
回复
尽量用大型的数据库吧
暖枫无敌 2011-11-06
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dpcrman1987 的回复:]

没有的,我65536这个我已经考虑进去了

当前行数等于65000的话,新建一个sheet从第一行从新开始添加
[/Quote]

那你先前的那个已经添加过的Excel文件写完后,你关闭了嘛???
dpcrman1987 2011-11-06
  • 打赏
  • 举报
回复
没有的,我65536这个我已经考虑进去了

当前行数等于65000的话,新建一个sheet从第一行从新开始添加

暖枫无敌 2011-11-06
  • 打赏
  • 举报
回复
Excel中最大行列数:

行:65536
列:256

所以你6W条数据时可以的,60000<65536
10w条数据的时候,100000>65536,

超出excel能容纳的最大行数,所以报错正常啊,肯定内存溢出了。

所以你在导出的时候,首先判断datatable的行数,然后截断数据,分批导出到不同的Excel文件中。
dpcrman1987 2011-11-06
  • 打赏
  • 举报
回复
报错的时候 我的for 循环 i=90000+

这个没问题吧
dpcrman1987 2011-11-06
  • 打赏
  • 举报
回复
方法就是很简单的循环添加数据啊,参数中有个ref int row参数

当row==65000的时候 我会有个方法 修改当前Worksheet、使row 归零

我测试了一下 修改row==45000的时候 6W数据可以导出2个sheet 这里没有问题
dpcrman1987 2011-11-06
  • 打赏
  • 举报
回复
对的,我过程当中没有调用 .save(path) 方法

也就是说我的所有数据都在内存里吗
dpcrman1987 2011-11-06
  • 打赏
  • 举报
回复
没有,我是连续操作的
jevin8011 2011-11-04
  • 打赏
  • 举报
回复
Excel 最大行数 65535 , 应该是这儿的问题,测试一下小于65535试试。
小赖赖 2011-11-04
  • 打赏
  • 举报
回复
Excel一个sheet页最大支持65536行
确定是内存溢出,而不是Excel超过行数吗?
如果是后者,改用.csv格式就行了
前者要看你的代码才知道了
wsxqaz 2011-11-04
  • 打赏
  • 举报
回复
10w条的用odbc每1w条insert一下试试

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧