2014-04-10 111 views
-1

我们使用excel interop在windows服务中创建excel报告。一切工作正常在Windows 7操作系统。但是,当服务部署在Win2K8R2服务器上时,观察到使用“SaveAs()”方法保存Excel文档时抛出以下异常。Excel Interop的替代方法SaveAs()方法

例外 - HRESULT:0x800A03EC

研究之后才知道,我们需要使用 “SaveCopyAs()” 或使用 “关闭()” 而不是另存为()方法。我尝试使用“SaveCopyAs()”方法,发现excel报告创建工作正常,但任务管理器中的“Excel.exe”仍然存在。这是一个内存泄漏问题。

因此使用“Close(true,filename,false)”方法,一切正常,包括清除任务管理器中的“Excel.exe”进程。

通过在测试两种方案的使用后将对象分配给null,可考虑通用机制来处置COM对象。

现在,我很困惑正确的方法来推进。请澄清。

回答

0

尝试使用“SaveCopyAs()”方法,发现excel报告 创建工作正常,但任务管理器中仍保留“Excel.exe”。

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

- >在将null分配给excel对象之前使用Marshal.ReleaseComObject()方法。