Как закрыть процесс Excel? - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день. Не могу решить следующую проблему: Создаю экземпляр Excel, открываю файл, закрываю его. В результате в task manager все равно остается висеть процесс Excel.exe. Он пропадает только после полного закрытия приложения. Вот код:
 Microsoft.Office.Interop.Excel.Application excelapp = new Microsoft.Office.Interop.Excel.Application();
            excelapp.Workbooks.Open(System.Windows.Forms.Application.StartupPath + "\\Шаблон1.xlsx", Type.Missing, false, Type.Missing, Type.Missing, Type.Missing, true, Type.Missing,
                 Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing)
 
excelapp.Quit();
Подскажите пожалуйста как закрыть так, чтобы из процессов также убралось?

Решение задачи: «Как закрыть процесс Excel?»

textual
Листинг программы
                try
                {// Присоединение к открытому приложению Excel (если оно открыто).
                    excelApp = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
 
                    foreach (var item in excelApp.Workbooks)
                    {
                        string tstr = (item as Excel.Workbook).Name;
                        if (tstr== NewFileName)  //Если открыт документ с таким же именем как и тот, что мы сохраняем, то
                        {
                            (item as Excel.Workbook).Close(false); //закрываем его.
                        }
                    }
 
                    if (excelApp.Workbooks.Count < 1) //Если открытых книг не осталось, то завершим процесс
                    {
                        ////Подготовка к убийству процесса Excel
                        int tExcelPID = 0;
                        int tHwnd = 0;
                        tHwnd = excelApp.Hwnd; //Получим HWND окна
                        System.Diagnostics.Process tExcelProcess;
                        GetWindowThreadProcessId((IntPtr)tHwnd, out tExcelPID); //По HWND получим PID
                        tExcelProcess = System.Diagnostics.Process.GetProcessById(tExcelPID); //Подключимся к процессу
                        ////Убийство процесса Excel
                        tExcelProcess.Kill(); 
                        tExcelProcess = null;
                    }
 
 
                }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5
Похожие ответы