0

我有一个遗留的 Excel 项目,它可以在我们的服务器上自动执行 Excel 2007,以便生成隔夜用户编写的报告。它运行良好,但最近在尝试升级到 Office 365(也尝试过 2016)时遇到了一个问题,在创建 Excel.Application 对象后它似乎抛出了 COMException 0x800AC472。

我可以毫无错误地创建对象,但是一旦我尝试调用 Application 对象的任何方法,它就会出错。

这是一个全新的香草服务器,安装了 .Net 4.6 和 3.5 以及 Office 365,仅此而已。

该代码已使用 COM 重新链接以引用 Office 15.0 互操作。同样的代码在 2007 年的旧服务器上仍然可以完美运行。

Microsoft.Office.Core 16.0
Microsoft.Office.Interop.Excel 16.0 

完整的错误消息:

System.Runtime.InteropServices.COMException (0x800AC472): Exception from HRESULT: 0x800AC472
   at Microsoft.Office.Interop.Excel.ApplicationClass.set_DisplayAlerts(Boolean RHS)
   at ExcelReportingService.ExcelJob.ProcessExcelBook(String location, String savePath, String testEmailsOnlyTo, Boolean allowEmptyResultFile, StringBuilder& processResults) in W:\\Group\\VIP\\Services\\ExcelReporting\\Classes\\ExcelJob.cs:line 136

该代码从未有安装包,我不确定这是否是问题所在?目前我只是将应用程序的 DLL 复制到服务文件夹并使用“sc create”进行安装。我没有安装任何其他运行时或将任何 DLL 复制到 GAC 中?但我也不用工作的 2007 服务器这样做吗?

我是否缺少需要在服务器上安装的运行时?

PS:我确实承认微软曾表示 Office 不支持服务器自动化,但这是一个遗留项目,我需要开始工作,因为所有服务器都在升级,Office 2007 不会安装在较新的服务器上。

4

0 回答 0