Sto lavorando con l'oggetto COM Interop di Excel. Sto scrivendo un metodo in cui sto aprendo e chiudendo un'applicazione Excel seguita dall'apertura di una cartella di lavoro e di un foglio Excel. Dopo aver finito di lavorarci, sto chiudendo sia l'applicazione che la cartella di lavoro. Il mio problema è che questo metodo può essere chiamato più volte ripetutamente e quando il foglio e l'app sono chiusi ottengo un messaggio dall'applicazione Excel se voglio salvare le modifiche che ho apportato. Il metodo si blocca fino a quando non preme "No", ma non posso dire all'utente di premere ogni volta.Chiusura dell'applicazione Excel con Interoperabilità Excel senza messaggio di salvataggio
Come posso chiudere l'applicazione senza ricevere questo messaggio o almeno rispondervi tramite codice?
Questi sono i metodi che sto usando per chiudere l'applicazione e la cartella di lavoro:
private void FreeWorkSheetResources(Excel.Worksheet sheet)
{
Marshal.ReleaseComObject(sheet);
sheet = null;
}
private void FreeWorkBookResources()
{
if (_excelSheets != null)
{
Marshal.ReleaseComObject(_excelSheets);
_excelSheets = null;
}
_excelWorkBook.Close();
Marshal.ReleaseComObject(_excelWorkBook);
_excelWorkBook = null;
}
private void FreeApplicationResources()
{
_app.Quit();
Marshal.ReleaseComObject(_app);
_app = null;
GC.Collect();
}
e questo è il modo in cui io li sto usando:
if (_app == null)
{
_app = new Excel.Application();
}
if (_excelWorkBook == null)
{
_excelWorkBook = GetWorkBook(_filePath);
}
....
....
FreeWorkBookResources();
FreeApplicationResources();
in modo da non sta salvando i cambiamenti che si stanno facendo sul foglio di lavoro giusto? –
Sto solo leggendo dal foglio di lavoro, non aggiornandolo. Non so perché mi sta anche chiedendo se voglio salvare eventuali modifiche –
Duplicato di [Cercando di uscire da C# cartella di lavoro Excel senza una finestra di dialogo] (http://stackoverflow.com/questions/17413887/trying-to-exit -c-sharp-excel-lavoro-senza-un-finestra-box). Si prega di utilizzare la ricerca. – CodeCaster