2012-01-11 21 views
23

Ho una cartella di lavoro di Excel con una funzione di cella personalizzata non dipendente dal tempo che sto aprendo da un'applicazione WindowsForms C# usando Interop .Eccellere. Leggo quattro valori da esso, non eseguo modifiche/calcoli espliciti, quindi lo chiudo da C#.Come chiudere-senza salvare una cartella di lavoro Excel/xlsm, con una funzione personalizzata, da C#

Quando provo a chiudere direttamente (senza salvare), viene visualizzato un prompt di salvataggio. Sospetto che ciò sia dovuto al fatto che Excel sta interpretando il ricalcolo automatico all'apertura come se creasse una modifica, anche se in realtà nulla cambia in senso numerico o formalmente. Ho anche impostato Excel.Application.Calculation = Excel.XlCalculation.xlCalculationManual. Come impedire che il prompt di salvataggio venga visualizzato e si chiuda semplicemente senza salvare?

+2

si può anche fare un 'workbook.Saved = true' prima di salvare per far eccellere app sapere che questo è già salvata e non è necessario richiedere .. – nawfal

risposta

41

Quando si utilizzano gli oggetti di Excel, assicurarsi di chiudere la cartella di lavoro in questo modo:

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(); 

Il falso nel metodo close indica non salvare le modifiche.

+1

Sì! Questo l'ha risolto. Grazie! –

+0

È veramente necessario passare gli argomenti 'System.Reflection.Missing.Value' al metodo' Chiudi'? Sto chiudendo solo passando false e non ho ancora avuto problemi. –

+1

@JeremyCook C'era una volta, forse, la necessità di farlo cambiata con un aggiornamento della rete di punti. – Motes

0

Recentemente stavo lavorando su automazione di Excel e ho trovato questo link è la soluzione perfetta Kill Process Excel C#

Problemi correlati