构建服务器上的Excel Interop

时间:2017-05-02 15:01:18

标签: c# .net office-interop excel-interop

我正在编写一个执行Excel 2013 Interop的应用程序。

我的第一步是使用add reference > com面板添加引用。但是我的jenkins上的构建失败了,因为服务器上没有安装Office。

在服务器上安装Office是不可能的,但是我找了Office 2013 PIA(就像this post和互联网上的许多其他人一样),但我找不到它。< / p>

所以我最终为它安装了nuget package。它很好,除了它没有安装Microsoft.Office.Core dll所需的例如将图片添加到工作表...我需要该功能......

  • 您知道我在哪里可以找到Microsoft.Office.Core.dll或者{。} Office 2013 PIA

  • 或者你有没有其他可以解决问题的解决方案 重写当前有效的所有代码?

3 个答案:

答案 0 :(得分:1)

建议您使用OpenXml,它易于使用,不需要您安装Office。

答案 1 :(得分:0)

您可以添加安装了必要库的Windows计算机代理(一个或多个),然后将主节点配置为仅运行专门分配给它的构建。

然后您不需要在服务器上安装Excel 2013开发环境,您的构建环境将更接近地代表用户环境。

请参阅How to set up new Jenkins slave(其中“奴隶”是代理人不受欢迎的条款)

答案 2 :(得分: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。或者只是为服务器端执行而设计的任何第三方组件(例如,Aspose)。