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

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

异常 - HRESULT:0x800A03EC

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

因此,使用“关闭(真,文件名,假)”方法,一切正常,其中包括清除任务管理器中的“Excel.exe”过程。

考虑用于处理COM对象的通用机制,方法是将两个对象在使用后分配给两个测试场景。

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


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

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

还有Aspose等商业软件包

和免费包如EPPlus。


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

- >这可能是因为你的工作簿没有关闭。

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

链接地址: http://www.djcxy.com/p/35651.html

上一篇: Alternatives to Excel Interop SaveAs() method

下一篇: C# .net Excel Interop leaves Excel process hanging