0

我在 IIS 上有一个 ASP.net 应用程序。在这个应用程序中,我创建了一个 Excel 应用程序:

using Excel = Microsoft.Office.Interop.Excel;
public Excel.Application ExlApp;
//
public Excel.Workbook ExlWb;
//
public Excel.Worksheet ExlWs;

在应用程序工作期间,我创建了一个新工作簿,最后,我销毁了我的对象:

        GC.Collect();
        GC.WaitForPendingFinalizers();

        Marshal.ReleaseComObject(ExlWs);        

        ExlWb.Close(Type.Missing, Type.Missing, Type.Missing);
        Marshal.ReleaseComObject(ExlWb);

问题:工作期间,EXCEL进程在内存中长大,如何正确关闭工作簿?

4

1 回答 1

5

也许您应该考虑用 OpenXML 处理替换 Excel 自动化。自动化办公应用程序服务器端是不受支持的场景:

http://support.microsoft.com/kb/257757

“微软目前不推荐也不支持任何无人值守、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT 服务)的 Microsoft Office 应用程序自动化,因为 Office 可能表现出不稳定的行为和/或在此环境中运行 Office 时出现死锁。”

于 2012-02-06T17:45:47.443 回答