【问题标题】:Using Office.Interop.Excel on machines where MS Office isn't installed在未安装 MS Office 的计算机上使用 Office.Interop.Excel
【发布时间】:2015-06-05 20:34:21
【问题描述】:

我有一个使用 Microsoft.Office.Interop.Excel 的应用程序,当我将它部署在没有任何版本的 MS Office 的机器上时,我收到以下错误

我尝试按照此说明安装 VSTOR,因此请回答 COM object with CLSID {00024500-0000-0000-C000-000000000046} is either not valid or not registered 但这并没有解决问题。

【问题讨论】:

  • 你打算用 Excel 做什么?你能说得更具体一点吗?
  • 我只会从 excel 文件(xls 和 xlsx)中读取数据
  • @EugeneAstafiev,您认为我需要按照 JacoDeGroot 的回答中的建议使用第三方库重写代码吗?
  • 我在下面留下了答案。

标签: c# excel com office-interop


【解决方案1】:

如果您只需要使用开放 XML 文档 (*.xslx),您可以考虑使用 Open XML SDK。请参阅Welcome to the Open XML SDK 2.5 for Office 了解更多信息。

如果是二进制文件格式,您需要使用任何不需要在机器上安装 Office/Excel 的第三方组件。

请特别注意以下事实:

Microsoft 目前不推荐也不支持从任何无人值守、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT 服务)自动化 Microsoft Office 应用程序,因为 Office在此环境中运行 Office 时可能会出现不稳定的行为和/或死锁。

如果您要构建在服务器端上下文中运行的解决方案,您应该尝试使用已确保无人值守执行安全的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方案。如果您使用服务器端解决方案中的 Office 应用程序,该应用程序将缺少许多成功运行所需的功能。此外,您将在整体解决方案的稳定性方面承担风险。

Considerations for server-side Automation of Office 文章中了解更多信息。

【讨论】:

  • 我最终使用了 NPOI。谢谢@尤金
【解决方案2】:

如果未安装 MS Office,您将无法使用 Microsoft 互操作库。您可能想查看读取 Excel 或 Word 文件的替代选项。您可以为此目的使用许多免费和(付费)C# 库,例如:

https://exceldatareader.codeplex.com/

https://github.com/ExcelDataReader/ExcelDataReader

【讨论】:

    【解决方案3】:

    您需要下载并安装 Microsoft Office {year}:Primary Interop Assemblies - 它是免费的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-01
      • 2019-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多