繁体   English   中英

如何发布Excel流程?

[英]How to release excel process?

我正在使用Excel互操作,并且每次调用时似乎都在创建一个进程

new Microsoft.Office.Interop.Excel.Application()

即使我打电话也永远不会结束流程

xlApp.Quit();

我如何才能结束流程?

您要发布所有参考资料吗? (这意味着您必须首先保存它们)。

例如,这是我通过一些excel interop()处理的内容:

    public void Dispose()
    {
        if(!this.disposed)
        {
            if(cell != null)
                Marshal.FinalReleaseComObject(cell);

            if(cells != null)
                Marshal.FinalReleaseComObject(cells);

            if(worksheet != null)
                Marshal.FinalReleaseComObject(worksheet);

            if(worksheets != null)
                Marshal.FinalReleaseComObject(worksheets);

            if (workbook != null)
            {
                workbook.Close(false, Type.Missing, Type.Missing);
                Marshal.FinalReleaseComObject(workbook);
            }

            Marshal.FinalReleaseComObject(workbooks);
            xlApp.Quit();
            Marshal.FinalReleaseComObject(xlApp);

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

            disposed = true;
        }
    }

(不确定这是否完美,但对我有用!)

如果您不释放使用过的COM对象,Excel将不会退出。

该答案应提供更多信息。

在大多数情况下,发生这种情况是因为您确实修改了文档,而Excel正在等待某些保存。 尝试类似:

ObjWorkBook.Close(Microsoft.Office.Interop.Excel.XlSaveAction.xlDoNotSaveChanges, 
    Type.Missing, Type.Missing);

退出之前

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM