Как выпустить процесс Excel? - PullRequest
       7

Как выпустить процесс Excel?

2 голосов
/ 28 сентября 2010

Я использую взаимодействие с Excel, и кажется, что он создает процесс каждый раз, когда я звоню

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

, и никогда не заканчиваю процесс, даже если я звоню

xlApp.Quit();

Какможно завершить процессы?

Ответы [ 3 ]

3 голосов
/ 28 сентября 2010

Вы публикуете все свои ссылки?(Это означает, что вы должны сохранить их в первую очередь).

Например, вот что у меня в распоряжении от взаимодействия с Excel ():

    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;
        }
    }

(Не уверен, что это идеальноно у меня это сработало!)

1 голос
/ 28 сентября 2010

Excel не выйдет, если вы не освободите используемые COM-объекты.

Этот ответ должен содержать больше информации.

0 голосов
/ 28 сентября 2010

В большинстве случаев это происходит из-за того, что вы изменили документ, а Excel ожидает сохранения.Попробуйте что-то вроде:

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

перед выходом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...