How to release excel process?

前端 未结 3 1376
悲&欢浪女
悲&欢浪女 2020-12-20 03:43

I\'m using the Excel interop and it seems to be creating a process every time I call

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

And n

相关标签:
3条回答
  • 2020-12-20 04:00

    Excel won't quit if you don't release used COM Objects.

    This Answer should provide more information.

    0 讨论(0)
  • 2020-12-20 04:08

    Are you releasing all of your references? (Which means you have to save them in the first place).

    For example here's what's in my dispose from some 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;
            }
        }
    

    (Not sure if this is perfect but it worked for me!)

    0 讨论(0)
  • 2020-12-20 04:13

    Most of the time this happens because you did modify the document and Excel is waiting for some saving. Try something like:

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

    before quitting

    0 讨论(0)
提交回复
热议问题