J'ai un classeur Excel avec une fonction de cellule personnalisée non dépendante du temps que j'ouvre à partir d'une application C # WindowsForms à l'aide d'Interop.Excel. J'ai lu quatre valeurs, je n'effectue aucun changement/calcul explicite, puis je le ferme à partir de C #.
Lorsque j'essaie de fermer directement (sans enregistrer), j'obtiens une invite de sauvegarde. Je soupçonne que c'est parce qu'Excel interprète le recalcul automatique à l'ouverture comme créant un changement, même si rien ne change réellement numériquement ou formellement. J'ai également défini Excel.Application.Calculation = Excel.XlCalculation.xlCalculationManual
. Comment puis-je empêcher l'invite d'enregistrement d'apparaître et de simplement fermer sans enregistrer?
Lorsque vous utilisez les objets Excel, assurez-vous de fermer le classeur comme ceci:
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();
Le faux dans la méthode close indique de ne pas enregistrer les modifications.
Récemment, je travaillais sur l'automatisation d'Excel et j'ai trouvé que ce lien était la solution parfaite Kill Process Excel C #