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

时间:2014-04-10 18:59:06

标签: c# .net excel excel-interop

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

异常 - HRESULT:0x800A03EC

在研究了解之后,我们需要使用" SaveCopyAs()"或使用"关闭()"而不是SaveAs()方法。我尝试使用" SaveCopyAs()"方法,发现excel报表创建工作正常,但" Excel.exe"在任务经理仍然。这是一个内存泄漏问题。

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

通过考虑处理COM对象的常用机制,在测试两个场景后,将对象分配为null。

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

2 个答案:

答案 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()方法。