Jessen 发表于 2016-5-31 14:27:27

AR导出Excel报表时,报内存溢出的异常

本帖最后由 Lenka.Guo 于 2016-6-1 17:17 编辑

异常信息如图。

Lenka.Guo 发表于 2016-5-31 15:23:33

您好,


导出Excel报错,可能的原因:

1. 导出 03格式 xls 报错:xls 格式文件行数限制为6万多行,如果超过6万行则会报错;而07xlsx格式是没问题。建议您更换成07格式的。
2. 其他导出格式都正常,如Image,PDf等,有可能是缺少DocumentFormat.OpenXml 引用文件,可手动添加到项目中。



Jessen 发表于 2016-5-31 16:29:28

谢谢你的回复。
可能是我没表述清楚。首先,生成报表的数据量并不多,100多条;其次,当只有两条数据的时候,是可以正常生成报表并导出xls的,说明不是代码缺少引用;然后,就是当我在生成具有100条数据的报表时,report.run是正常的,就是在导出生成xls的时候抛出”out of Memery“异常。

Lenka.Guo 发表于 2016-5-31 18:04:13

Jessen 发表于 2016-5-31 16:29
谢谢你的回复。
可能是我没表述清楚。首先,生成报表的数据量并不多,100多条;其次,当只有两条数据的时 ...

Hi
这个可能就是报表设计的方式不对导致错误,您可以使用报表设计器,在预览界面导出Excel 看看是否会报错,如果仍然报错,则表示是报表设计的问题,如果正常,则表示Excel的导出代码有问题哦。

Jessen 发表于 2016-6-1 11:19:24

Hi,谢谢你的回复。
没看懂你说的,预览界面,没有导出Excel。代码应该是没问题的,因为人数较少的时候是可以导出的,人数较多后就会抛出内存溢出的异常。我用的是AR3版本。
DataDynamics.ActiveReports.Export.Xls.XlsExport对象的Export方法是封装好了的,我们也看不到里面的详细代码。
另外,在DEBUG的时候我有监测WEBDEV.WEBSERVER.EXE进程,当专用内存达到90MB左右的时候,就会抛出异常。

Jessen 发表于 2016-6-1 11:20:57

其实,我想知道的是AR控件自己的问题还是在DEBUG的时候vs Develepment Server的问题。

Jessen 发表于 2016-6-1 11:21:01

其实,我想知道的是AR控件自己的问题还是在DEBUG的时候vs Develepment Server的问题。

Lenka.Guo 发表于 2016-6-1 14:23:09

Jessen 发表于 2016-6-1 11:19
Hi,谢谢你的回复。
没看懂你说的,预览界面,没有导出Excel。代码应该是没问题的,因为人数较少的时候是 ...

不好意思,
之前以为您是使用的是ActiveReports10 版本,所以让您使用它的最终报表设计器,来打开报表,打开之后,预览报表时,最终报表设计器是支持直接导出报表的。

因为AR3是比较老的版本了,无法重现您的问题,无法判断是什么原因导致的。
如果导出代码是封装好,多人同时调用,容易导致内存溢出的错误,建议您在调用导出操作之后,释放内存:

rpt.Document.Dispose()
rpt.Dispose()
rpt=Nothing


页: [1]
查看完整版本: AR导出Excel报表时,报内存溢出的异常