我们正在使用excel interop在Windows服务中创建Excel报告。在Windows 7操作系统中一切正常。但是当在Win2K8R2服务器中部署服务时,观察到在使用" SaveAs()"保存excel文档时抛出以下异常。方法
异常 - HRESULT:0x800A03EC
在研究了解之后,我们需要使用" SaveCopyAs()"或使用"关闭()"而不是SaveAs()方法。我尝试使用" SaveCopyAs()"方法,发现excel报表创建工作正常,但" Excel.exe"在任务经理仍然。这是一个内存泄漏问题。
因此使用"关闭(true,filename,false)"方法,一切正常,包括清除" Excel.exe"任务管理器中的过程。
通过考虑处理COM对象的常用机制,在测试两个场景后,将对象分配为null。
现在,我对正确的方法感到困惑。请澄清。
答案 0 :(得分:0)
查看Open XML SDK
Microsoft不建议使用Office Interopt进行服务器自动化
How to: Create a spreadsheet document by providing a file name (Open XML SDK)
还有像Aspose
这样的商业软件包免费套餐,例如EPPlus。
答案 1 :(得分:0)
尝试使用" SaveCopyAs()"方法,发现excel报告 创作工作正常,但" Excel.exe"在任务经理中。
- >这可能是因为您的工作簿未关闭。
- >在为excel对象赋值null之前使用Marshal.ReleaseComObject()方法。