3

这可能是一个沉重的问题,它可能会被否决,但这完全让我感到沮丧。

当您在开发中使用 SQL Server 时,数据访问快速而高效,但是当您使用 COM 与 Excel 对话时,它的速度非常慢。

不管你使用什么数据访问技术,ADO、ADO.NET、LINQ、Entity Framework、Astoria(ADO.NET 数据服务),它们都比自动化 Excel 更快。

如果您想要的只是工作簿中单元格“A1”中的数据,则需要一个 Excel.Application、Excel.Workbook、Excel.Worksheet 和 Excel.Range 对象,以获取一个数据点。

WTF,为什么与 SQL Server 对话比与 Excel 对话更有效?Excel 是本地的,而 Sql Server 可能不是。

蒂亚克里斯

4

4 回答 4

16

因为启动一个被设计为交互式应用程序的大型单片可执行文件比通过快速网络与为此目的设计的应用程序通信要慢。

于 2009-10-22T20:06:40.620 回答
6

每次需要与 excel 对话时,服务器都必须实际启动 excel 程序。它在一个隐藏的桌面中,但它仍在启动整个程序。如果您有几个人使用该站点,那么这也是 Excel 的几个实例。如果他们共享同一个工作簿,那就更糟了。

目前,Sql Server已经在运行。只需连接即可。它是为这种事情而建造的。Excel 不是。

于 2009-10-22T20:13:47.803 回答
2

即使在 2007 年,Excel 仍然是一个 com 互操作。但是有很多助手

excel-performance-new-whitepaper-available

电子表格齿轮

excelpackage.codeplex

于 2009-10-22T22:02:06.147 回答
0

这是因为 SQL Server 是为服务器数据而设计的,而 Excel 不是。网络延迟甚至不会在这里发挥作用,直到您从 SQL 服务器检索 1000 甚至数百万行

于 2009-10-22T20:07:04.817 回答