Не удается закрыть Excel в диспетчере задач

168
18 апреля 2022, 19:20

После создания объекта Excel не удается его закрыть: он также висит диспетчере задач:

 Excel.Application ObjWorkExcel = new Excel.Application();
 Excel.Workbook ObjWorkBook = ObjWorkExcel.Workbooks.Add();
 Excel.Worksheet ObjWorkSheet = (Excel.Worksheet)ObjWorkBook.Sheets[1];
 ObjWorkSheet.Cells[1, 1] = // Заполнение документа;

Пробовал закрыть различными способами:

  ObjWorkExcel.DisplayAlerts = false;
  ObjWorkExcel.Workbooks.Close();
  ObjWorkExcel.Quit();
  ObjWorkBook.Close(false, Type.Missing, Type.Missing);
   
  Marshal.ReleaseComObject(ObjWorkExcel);
  Marshal.ReleaseComObject(ObjWorkBook);
  Marshal.ReleaseComObject(ObjWorkSheet);
  Marshal.FinalReleaseComObject(ObjWorkExcel);
  GC.Collect();
  GC.WaitForPendingFinalizers();

Сработал только способ Process.kill, однако тогда закрываются все открытые экселевские документы, что мне не подходит. Помогите, пожалуйста, решить эту проблему

Answer 1

Закиньте все в Try Catch И в конце сделайте:

            finally
            {
                wb?.Close(false, filePath);
            if (xlSheets != null)
                Marshal.ReleaseComObject(xlSheets);
            if (excel != null)
                Marshal.ReleaseComObject(excel);
            if (wb != null)
                Marshal.ReleaseComObject(wb);
            }
READ ALSO
Приведение строки к маске ввода

Приведение строки к маске ввода

От пользователя приходит некий код, и он сравнивается с форматом кода для каждой конкретной страны(он может быть разным), и если его можно...

168
Не заполняется DataGrid

Не заполняется DataGrid

Пишу на WPFВот мой код:

210
Сделать маппинг иерархии на плоскую Dto

Сделать маппинг иерархии на плоскую Dto

Допустим, у меня есть класс в который вложена коллекция объектов другого класса

180
Как сохранить простой словарь в Unity?

Как сохранить простой словарь в Unity?

Как сохранить простой словарь Dictionary <int, string> в Unity?

174