【问题标题】:Why is .NET Sql Server access faster than Excel Interop?为什么 .NET Sql Server 访问比 Excel 互操作更快?
【发布时间】:2010-12-09 05:45:46
【问题描述】:

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

当您在开发中使用 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 可能不是。

TIA 克里斯

【问题讨论】:

  • 检查 codeplex 是否有大量项目可以让您直接打开和查询 Excel 文件,而无需任何类型的互操作 BS。

标签: .net sql-server com excel-interop


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 朋友不要让朋友用Excel做数据库。
      【解决方案4】:

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

      excel-performance-new-whitepaper-available

      spreadsheetgear

      excelpackage.codeplex

      【讨论】:

      • 谢谢,我现在正在评估替代方案!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-19
      • 1970-01-01
      • 2017-04-06
      • 1970-01-01
      • 2022-11-22
      相关资源
      最近更新 更多