在我的代码中,我使用了Microsoft.Office.Interop.Excel.dll来生成Excel报告。
但在运行期间,异常即将发生
System.Runtime.InteropServices.COMException(0x800AC472):异常 来自HRESULT:0x800AC472
在((xls.Range)worKsheeT.Cells[3, 1]).Font.Bold = true;
选中后,发现此错误即将发生,因为应用程序正在等待获取Excel 2013的激活弹出窗口的响应,该弹出窗口仅在执行此代码后才会生效。
正如pop清楚地显示我们在服务器上有excel的评估版本,但我的问题是,我们是否有机会抑制C#弹出并使用评估版本生成excel报告?
答案 0 :(得分:1)
您可以考虑使用Open XML SDK代替。有关详细信息,请参阅Welcome to the Open XML SDK 2.5 for Office。
或者,如果您需要处理二进制文件格式,您可以考虑使用为服务端执行而设计的第三方组件(例如,Aspose)。
Microsoft目前不建议也不支持从任何无人参与的非交互式客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT服务)自动化Microsoft Office应用程序,因为Office可能会出现不稳定Office在此环境中运行时的行为和/或死锁。
如果要构建在服务器端上下文中运行的解决方案,则应尝试使用已为安全无人值守执行的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方法。如果从服务器端解决方案使用Office应用程序,则应用程序将缺少许多成功运行的必要功能。此外,您将承担整体解决方案稳定性的风险。请在Considerations for server-side Automation of Office文章中详细了解相关内容。