在未安装 MS Office 的计算机上使用 Office.Interop.Excel

Using Office.Interop.Excel on machines where MS Office isn't installed

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

我尝试按照本文中的指示安装 VSTOR,所以回答 COM object with CLSID {00024500-0000-0000-C000-000000000046} is either not valid or not registered 但这并没有解决问题。

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

如果未安装 MS Office,则无法使用 Microsoft Interop 库。您可能想查看其他选项来读取 Excel 或 Word 文件。有许多免费和(付费)C# 库可用于此目的,例如:

https://exceldatareader.codeplex.com/

https://github.com/ExcelDataReader/ExcelDataReader

如果您只需要使用打开的 XML 文档 (*.xslx),您可以考虑使用 Open XML SDK。有关详细信息,请参阅 Welcome to the Open XML SDK 2.5 for Office

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

请特别注意以下事实:

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

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

Considerations for server-side Automation of Office 文章中阅读更多相关信息。