Excel Interop SaveAs()方法的替代方法

本文关键字:方法 Interop SaveAs Excel | 更新日期: 2023-09-27 17:57:44

我们使用excel interop在windows服务中创建excel报告。在Windows7操作系统中一切正常。但当该服务部署在Win2K8R2服务器上时,观察到在使用"SaveAs()"方法保存excel文档时引发了以下异常。

异常-HRESULT:0x800A03EC

经过研究,我们知道,我们需要使用"SaveCopyAs()"或使用"Close()"代替SaveAs()方法。我尝试使用"SaveCopyAs()"方法,发现excel报表创建工作正常,但任务管理器中的"excel.exe"仍然存在。这是内存泄漏问题。

因此,使用了"Close(true,filename,false)"方法,一切都很好,包括清除任务管理器中的"Excel.exe"进程。

考虑了一种通用机制来处理COM对象,即在测试的两个场景使用后将对象分配为null。

现在,我对推进它的正确方法感到困惑。请澄清。

Excel Interop SaveAs()方法的替代方法

查看Open XML SDK
Microsoft不建议Office Interopt用于服务器自动化

如何:通过提供文件名(Open XML SDK)创建电子表格文档

也有像Aspose 这样的商业包装

以及免费软件包,如EPPlus。

尝试使用"SaveCopyAs()"方法,发现excel报表创建工作正常,但任务管理器中的"Excel.exe"仍然存在。

-->这可能是因为您的工作簿未关闭。

-->在为excel对象指定null之前,请使用Marshal.ReleaseComObject()方法。