Essayez de quitter le classeur Excel C # sans boîte de dialog

J’utilise Microsoft Office Interop pour modifier certains fichiers Excel et lorsque je les ferme, j’utilise

outputExcelWorkBook.Close(false, paramMissing, paramMissing); 

Mais une boîte de dialog apparaît quand même, même si j’ai passé false comme premier paramètre. Je l’ai également essayé avec true et lui ai donné un chemin d’access au fichier comme second paramètre, mais dans les deux cas, une boîte de dialog s’affiche pour me demander si je souhaite enregistrer avant de fermer. Quelqu’un peut-il me dire ce qui se passe ici?

Essayez de définir la propriété Application.DisplayAlerts sur false . Vous trouverez peut-être utile de définir cette propriété sur false pour la majorité de vos routines d’automatisation. N’oubliez pas de restaurer la valeur précédente avant de retourner.

 Application applicationInstance = ...; var oldDisplayAlertsValue = applicationInstance.DisplayAlerts; applicationInstance.DisplayAlerts = false; try { outputExcelWorkBook.Close(false, Missing.Value, Missing.Value); } finally { appliationInstance.DisplayAlerts = oldDisplayAlertsValue; } 

Cela a fonctionné pour moi:

  1. Lancer Excel

  2. Ouvrez le classeur

  3. Récupère la feuille active et effectue une modification (ajout d’un “texte” à la cellule [2,2])

  4. Fermez le classeur avec un seul paramètre true, ce qui signifie “enregistrer les modifications”.

  5. Aucune boîte de dialog n’est affichée.

Remarque: lorsque j’appelle Fermer sans paramètre, je suis invité à enregistrer les modifications.

  Microsoft.Office.Interop.Excel.Application excel = new Application(); Microsoft.Office.Interop.Excel.Workbook workBook = excel.Workbooks.Open(fileLocation); Microsoft.Office.Interop.Excel.Worksheet sheet = workBook.ActiveSheet; sheet.Cells[2, 2] = "Text"; workBook.Close(true); excel.Quit();