【发布时间】:2016-03-11 14:30:00
【问题描述】:
在 C# 中使用 Excel 互操作,在具有 16GB 内存的 Macbook Pro 上的 Windows 10 下,我无法打开超过 11 个 Excel 实例。在第 11 个实例之后,我在“弹出窗口”中收到以下错误:
“不能使用对象链接和嵌入”
这是我使用的代码:
List<Application> apps = new List<Application>();
for (int i = 0; i < 15; i++)
{
Application a = new Application();
apps.Add(a);
}
每个 Excel 进程大约有 15k 内存,与机器上可用的 16GB 内存相差甚远......
我正在使用 .NET Framework 4.5.2、Windows 10、具有 16GB 内存的 macbook pro 和 Excel 个人版。
【问题讨论】:
-
打开 Excel 实例会消耗 COM 句柄和内存。你可能只是达到了这些限制。顺便说一句,Excel 使用的内存远远超过 15KB。它更像是 15+MB。
-
我无法在我的机器上重现这个。只是这里的预感......你能看看你的任务管理器,看看有多少 Excel 实例实际运行?
-
@AricLasry - 天哪,你让这一切变得艰难。您为什么要开发需要打开多个实例的软件?
-
每个人都在这里得到的是......可能有更好的方法来做任何你正在做的事情。如果/当你想出如何破解 11 个实例时,你就会发现其他需要克服的限制,因为看起来你正试图用 错误 做 正确 的事情工具。您也可能在遇到下一个技术限制之前很久就遇到了licencing 限制。
-
如果您将代码作为服务运行,则根本不应该使用 Excel 互操作。它不适用于非交互式会话。请参阅KB257757,您应该使用Open Xml SDK for Office instead,这是微软发布的用于在服务环境中自动创建 Office 文档的库。
标签: c# excel office-interop com-interop