当我 运行 在 azure devops 管道中构建 (vstest) 时无法打开 Excel

Unable to open Excel when i run build (vstest) in azure devops pipeline

我正在使用 Microsoft.Office.Interop.Excel 打开 excel 工作簿以对给定项目执行一些自动化操作。当我 运行 我的构建时,我遇到了这个错误

System.Runtime.InteropServices.COMException:为 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件检索 COM class 工厂失败,原因如下:80040154 Class 未注册(HRESULT 异常:0x80040154 (REGDB_E_CLASSNOTREG))。

这来自我的视觉工作室中的这段代码。 excel.Application x1app = 新 excel.Application();

我可以 运行 在本地进行测试,但是当我 运行 在 azure devops 中进行测试时,它不起作用。我相信这是因为 devops 内部没有 excel 因此无法执行代码。

  1. 有什么方法可以解决这个错误,同时仍然使用互操作?
  2. 除了 EPPlus 之外,还有其他我可以尝试的选择吗?

    excel.Application x1app = new excel.Application(); x1app.SheetsInNewWorkbook = 1; x1app.Visible = true; excel.Workbook x1workbook = x1app.Workbooks.Open(); excel.Workbook NewWorkBook = x1app.Workbooks.Add(); for (sheets) { excel._Worksheet x1worksheet = x1workbook.Sheets[x]; x1worksheet.Copy(Type.Missing, After: NewWorkBook.Sheets[x - 3]); } Thread.Sleep(2000);

我应该能够 运行 在 devops 上成功构建

根据您的描述,您正在做的事情需要 Excel 安装在构建代理上。

如果您在 Azure DevOps 中使用主机构建代理。机器上好像装不上。您可以在 Azure Pipelines 托管代理池中找到安装在计算机上的完整软件列表,例如 Azure Pipelines Hosted VS2017 image.

作为解决方法,如果 Microsoft 托管的代理不能满足您的需求,那么您可以 deploy your own self-hosted agents

只需要确保您的自托管代理环境与本地开发环境相同即可。

此外,您对excel的详细用法还不是很清楚。您也可以尝试使用 openxml。请在这里查看类似的问题: