2013-07-01 17 views
7

Sto usando Microsoft Office Interop per modificare alcuni file di Excel e quando li chiudo io usoCercando di uscire da C# Excel cartella di lavoro senza una finestra di dialogo

outputExcelWorkBook.Close(false, paramMissing, paramMissing); 

Ma una finestra di dialogo viene ancora in su, anche se ho passato false come primo parametro. Ho anche provato con true e dandogli un percorso file come secondo parametro, ma in entrambi i casi viene visualizzata una finestra di dialogo che mi chiede se voglio salvare prima di chiudere. Qualcuno può dirmi cosa sta succedendo qui?

risposta

12

Provare a impostare la proprietà Application.DisplayAlerts su false. Potrebbe essere utile impostare questa proprietà su false per la maggior parte delle routine di automazione. Ricordarsi di ripristinare il valore precedente prima di tornare.

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

questo ha funzionato per me:

  1. Iniziato Excel

  2. Aprire la cartella di lavoro

  3. Prendi il foglio attivo ed effettuare una modifica (aggiunto "testo" alla cella [ 2,2])

  4. Chiudere la cartella di lavoro con un solo para metro di vero che significa "salva le modifiche"

  5. Nessuna finestra di dialogo.

Nota: quando chiamo Chiudi senza un parametro, viene richiesto di salvare le modifiche.

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