【问题标题】:Excel Interop on build server构建服务器上的 Excel 互操作
【发布时间】:2017-09-30 04:09:34
【问题描述】:

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

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

在服务器上安装 Office 是不可能的,但我查找了 Office 2013 PIA(如 this post 和互联网上的许多其他建议),但我找不到它。

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

  • 你知道我在哪里可以找到Microsoft.Office.Core.dllOffice 2013 PIA?

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

【问题讨论】:

  • 为什么要投反对票?

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


【解决方案1】:

推荐您使用OpenXml,使用方便,无需安装Office。

【讨论】:

  • 这是一个我想避免的选项,但如果我无法弄清楚,我会记住它。
  • @fharreau 如您所知,Excel.Interop 在没有 Office 的情况下无法工作。所以这将是一个问题。您绝对应该使用 OpenXml。
  • 或其他库,如 EPPlus
  • @AlimjanMettursun > 即使我同意你的观点,这也不是我问题的重点。我现在被Interop困住了。此外,我确信该应用程序的所有用户都在他们的计算机上安装了 Office。
【解决方案2】:

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

那么你就不需要在你的服务器上安装Excel 2013开发环境了,你的构建环境会更贴近用户环境。

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

【讨论】:

  • 我可以在服务器上安装Excel开发环境,只要不安装整个Office。我的问题是我找不到 2013 版的 PIA ...
  • 如果 2013 版的 PIA 不能用于服务器,那么在 Windows 台式机上安装 2013 版,然后使用该 Windows 台式机作为构建代理不是更简单吗?
  • 你在说什么? Office 开发工具还是完整的 Office 2013?无论我是在服务器上安装 Office 还是在经典 windows 上,都是同样的问题,我不想这样做。
  • 抱歉,我误会了。我以为您不允许(受软件限制)在服务器上安装 Office。相反,您是说虽然它是允许的,但您不认为它是您问题的可接受解决方案。我没有任何其他帮助可以提供。 (对我来说)最简单的解决方案似乎是在将用于构建的机器上安装 Office。
【解决方案3】:

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)。

【讨论】:

  • 我的应用程序是在安装了 Office 的客户端计算机上运行的 WPF 应用程序。我只想在我的 CI 服务器上构建它,而不是在它或任何服务器端上下文上运行。
猜你喜欢
  • 2023-03-25
  • 2018-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-24
  • 2016-08-03
  • 1970-01-01
相关资源
最近更新 更多