Закройте книгу Excel, не убивая процесс Excel или другие книги - C # - PullRequest
0 голосов
/ 22 ноября 2018

Я хочу иметь возможность завершить задачу под названием «Microsoft Excel - test.xlsx», не закрывая другие приложения, которые также являются приложениями Excel.

Я использовал

foreach (Process process in Process.GetProcesses())
            {
                if (process.ProcessName.Equals("EXCEL"))
                    process.Kill();
            }

, но это убивает все другие открытые книги Excel.Можно ли убить или завершить указанную книгу?

1 Ответ

0 голосов
/ 22 ноября 2018

Мое решение находит книгу и затем закрывает ее.

/// <summary>
    /// Gets the current Excel process and specified workbook and closes it.
    /// If the workbook was the only one in the application, it then closes excel as well.
    /// </summary>
    public static void CloseWorkbook()
    {
        try
        {
            Application excelApplicationProcess = (Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application"); // get current excel process

            foreach (object wb in excelApplicationProcess.Workbooks)
            {
                if (((Workbook)wb).FullName.Equals(Settings.Default.Test))
                    ((Workbook)wb).Close(false, Settings.Default.Test, Missing.Value);
            }

            if (excelApplicationProcess.Workbooks.Count == 0) // if it was the only one close excel as well
                excelApplicationProcess.Quit();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...