Подтвердить что ты не робот

Как закрыть без сохранения книги Excel/xlsm, с пользовательской функцией, из С#

У меня есть книга Excel с пользовательской функцией, не зависящей от времени, которую я открываю из приложения С# WindowsForms с помощью Interop.Excel. Я прочитал четыре значения из него, не выполнял явных изменений/вычислений, а затем закрыл его из С#.

Когда я пытаюсь напрямую закрыть (без сохранения), я получаю приглашение сохранения. Я подозреваю, что это потому, что Excel интерпретирует автоматический пересчет при открытии как создание изменения, хотя ничто фактически не изменяется численно или не изменяется. Я также установил Excel.Application.Calculation = Excel.XlCalculation.xlCalculationManual. Как предотвратить появление приглашения на сохранение и просто закрыть без сохранения?

4b9b3361

Ответ 1

Когда вы используете объекты Excel, обязательно закройте эту книгу следующим образом:

Excel.Application xlApp ;
Excel.Workbook xlWorkBook ;
Excel.Worksheet xlWorkSheet ;
object misValue = System.Reflection.Missing.Value;

xlApp = new Excel.ApplicationClass();
xlWorkBook = xlApp.Workbooks.Add("Yourworkbook");

xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

....do your stuff

xlWorkBook.Close(false, misValue, misValue);

xlApp.Quit();

Значение false в методе close указывает, что не сохранять изменения.

Ответ 2

Недавно я работал над автоматизацией Excel, и я нашел эту ссылку идеальным решением Убить процесс Excel С#