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

问题描述:

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

enter image description here

我尝试安装VSTOR在此表示这样回答COM object with CLSID {00024500-0000-0000-C000-000000000046} is either not valid or not registered 但这并没有解决问题。

+0

你打算用Excel做什么?你可以再详细一点吗? – 2015-04-01 09:15:48

+0

我只会读取excel文件(xls和xlsx)中的数据 – Kira 2015-04-01 09:20:56

+0

@EugeneAstafiev,您认为我需要使用第三方库重写代码,如JacoDeGroot的回答中所建议的那样? – Kira 2015-04-01 09:40:17

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

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

特别要注意以下事实:

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

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

阅读更多关于Considerations for server-side Automation of Office文章。

+0

我最终使用NPOI。谢谢@Eugene – Kira 2015-04-01 13:15:54

您需要下载并安装Microsoft Office {年}:主互操作程序集 - 它是免费的。

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

https://exceldatareader.codeplex.com/

https://github.com/ExcelDataReader/ExcelDataReader