我有一个使用VB.NET编写的应用程序,使用CreateObject调用Excel并将大量数据导入其中。我们遇到了内存不足的异常,并且此时该应用程序通常会占用1GB的内存。但是,我不能让所有数字加起来。
以下是将数据传递给Excel的方式:
这个应用程序大约有400MB的屏幕数据(数据网格),当它崩溃时,尽管Excel和CSV只有200MB和68MB,但它使用了额外的600MB。我意识到内存数组可能会更大,但是除非Excel以某种方式使用我的应用程序内存,否则如何消耗600MB传递数据给Excel?
我试图找出Excel是否通过CreateObject在自己的内存空间中运行还是使用我的应用程序内存空间,但是一无所获。ProcessExplorer将它们显示为单独的进程,所以我不知道该怎么想。
我们发现将应用程序作为64位而不是32位运行可以解决问题,但并非所有客户都拥有64位的Office。
因此,我的问题是:那一行代码如何使用600MB,并且有没有更好的方法将数据传递给Excel。
以下是将数据传递给Excel的方式:
worksheet_object.Range("A1").Resize(rows, cols).Value = an_array
这个应用程序大约有400MB的屏幕数据(数据网格),当它崩溃时,尽管Excel和CSV只有200MB和68MB,但它使用了额外的600MB。我意识到内存数组可能会更大,但是除非Excel以某种方式使用我的应用程序内存,否则如何消耗600MB传递数据给Excel?
我试图找出Excel是否通过CreateObject在自己的内存空间中运行还是使用我的应用程序内存空间,但是一无所获。ProcessExplorer将它们显示为单独的进程,所以我不知道该怎么想。
我们发现将应用程序作为64位而不是32位运行可以解决问题,但并非所有客户都拥有64位的Office。
因此,我的问题是:那一行代码如何使用600MB,并且有没有更好的方法将数据传递给Excel。