我有一个 VB.NET 应用程序,它使用 CreateObject 来使用 Excel 并将大量数据转储到其中。我们正在出现内存不足异常,此时我们的应用程序通常会达到 1GB 内存。但是我不能把所有的数字加起来。
这是将数据传递到 Excel 的方式:
worksheet_object.Range("A1").Resize(rows, cols).Value = an_array
该应用程序大约 400mb,屏幕上的数据(数据网格),当它崩溃时,它已经使用了额外的 600mb,尽管带有 CSV 的 Excel 只有 200mb,而 CSV 只有 68mb。我意识到内存中的数组可能会更大一些,但是除非 Excel 以某种方式使用我的应用程序内存,否则 600mb 的数据如何被吞并到 Excel?
我试图通过 CreateObject 找出 Excel 是在它自己的内存空间中运行还是使用我的应用程序内存空间,完全空白。ProcessExplorer 将它们显示为单独的进程,所以我不知道该怎么想。
我们发现以 64 位而不是 32 位运行应用程序可以解决问题,但并非我们所有的客户都将拥有 64 位办公室。
所以我的问题是:那一行如何使用 600mb,有没有更好的方法将数据传递到 Excel。