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