找回密码
 立即注册

QQ登录

只需一步,快速开始

cry930

银牌会员

2

主题

16

帖子

2992

积分

银牌会员

积分
2992

活字格认证

最新发帖
cry930
银牌会员   /  发表于:2011-10-14 14:15  /   查看:15853  /  回复:24
Spread.SaveExcel 执行的时候出现了内存溢出,加了2G的内存条一个,还是内存溢出,有什么好办法么?
visio 2010 ,
spread for Win form 5
framework3.5
office2010

24 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2011-10-14 14:33:00
沙发

回复 1# cry930 的帖子

你好,现在我们还不能确定问题所在,能否用Spread.Save() 方法把 Spread 保存成 XML 格式文件,传到论坛上来,便于我们调试。
回复 使用道具 举报
cry930
银牌会员   /  发表于:2011-10-14 14:38:00
板凳

回复 2# iceman 的帖子

好的,等一下啊,我同事在弄……
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-10-17 16:56:00
地板

回复 3# cry930 的帖子

你好,请问你的问题解决了吗?
回复 使用道具 举报
cry930
银牌会员   /  发表于:2011-11-7 17:59:00
5#
你好,没有解决。
生成的xml文件太大了,1g还多呢。
跟要保存的excel文件大小有关系,excel文件在大概10000行(大概37M左右)之内都正常,再大就出错了。(就一个sheet)
回复 使用道具 举报
cry930
银牌会员   /  发表于:2011-11-7 18:01:00
6#
错误信息是:error saving excel file
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-11-7 18:28:00
7#

回复 6# cry930 的帖子

你好,error saving excel file 可能是被保存的 excel 文件进程被占的导致的。
还有,saveexcel 不仅要保存数据还有保存格式信息,所以内存消耗会很大。你的 excel 文件中有多少列呢?
可以尝试以 ExcelSaveFlags.DataOnly 方式去保存。
如果数据量过大,恐怕除了加内存条,没有别的办法了。
回复 使用道具 举报
cry930
银牌会员   /  发表于:2011-11-8 09:38:00
8#
你好,excel文件有128列,10000行左右,感觉数据量也不是很大,估计是格式信息比较大吧。
就是想要spread的数据和格式都保存到excel文件中,所以才用saveexcel方法的。
加内存的方法我也试过了,内存2g-〉4g,还是不管用。
请问有没有其他什么方法?
比如说拆分数据源(spread),分多次写到excel中,如果可行的话代码怎么写呢?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-11-8 12:26:00
9#
你好,我把 Spread 表单设置成 10000 行、128 列,给单元格通过循环条件赋值,并且设置了样式后,保存成 excel 文件正常,文件大小为 22.8 M ,所以没有办法重现你的数据源。所以请你把 excel 文件保存到 QQ 文件中转站中。这样我可以下载并且测试。
关于 QQ 文件中转站请参考:http://www.ragbear.com/read.php?tid=41559
回复 使用道具 举报
cry930
银牌会员   /  发表于:2011-11-8 13:22:00
10#
qq邮箱被屏蔽了,我这里不能上。
我把保存成功的最大的excel文件压缩后放在附件中了。
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部