我正在使用 VS 2015 来创建一个控制台应用程序,该应用程序引用了Microsoft.Office.Interop.Excel。当我在服务器(Windows Server 2012)上部署它时,我收到以下错误:
Retrieving the COM class factory for component with CLSID {0004567-3456-
0000-C002-000434000046} failed due to the following error: 80040154
我读了一些旧帖子,建议我必须在服务器上安装Office 2010。但是,这是不可能的。有没有办法在我的应用程序中嵌入Excel程序集? 或者有什么不同的方法来解决这个问题吗?我需要做的只是将Excel文件表名称提取为列表....
答案 0 :(得分:0)
请记住,您需要在目标计算机上安装主机应用程序。您何时何地在服务器上运行控制台应用程序?
Microsoft目前不建议也不支持从任何无人参与的非交互式客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT服务)自动化Microsoft Office应用程序,因为Office在此环境中运行Office时,可能会出现不稳定的行为和/或死锁。
如果要构建在服务器端上下文中运行的解决方案,则应尝试使用已为安全无人值守执行的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方法。如果从服务器端解决方案使用Office应用程序,则应用程序将缺少许多成功运行的必要功能。此外,您将承担整体解决方案稳定性的风险。请在Considerations for server-side Automation of Office文章中详细了解相关内容。
如果只处理打开的XML文档,可以考虑使用Open XML SDK。有关详细信息,请参阅Welcome to the Open XML SDK 2.5 for Office。或者使用为服务器端执行而设计的任何第三方组件。