2009-04-24 28 views
10

È possibile aprire e scrivere nel file excel, ma quando si tenta di salvare il file passando un percorso, l'operazione di salvataggio viene visualizzata con la finestra di dialogo Salva. Mi aspettavo per salvare quitely il file nel percorso specificatoProblema C# ed Excel Interop, Salvataggio del file excel non agevole

Il codice è il seguente:

excelApp.Save(exportToDirectory); 
excelApp.Quit(); 

dove, exportToDirectory è: "C: \ files \ strings.xlsx".

PS: ho già controllato con la versione excel e problema simile.

Grazie

risposta

15

è necessario utilizzare Workbook.SaveAs invece di Application.Save:

Excel.Application app = new Excel.Application(); 
Excel.Workbook wb = app.Workbooks.Add(missing); 
... 
wb.SaveAs(@"C:\temp\test.xlsx", missing, missing, missing, missing, 
      missing, Excel.XlSaveAsAccessMode.xlExclusive, 
      missing, missing, missing, missing, missing); 
+0

Qualsiasi idea di qual è il valore numerico per Excel.XlSaveAsAccessMode.xlExclusive? Ho bisogno di passare questo a questa funzione in un file di script di Windows. – MrVimes

+1

@MrVimes Totalmente in ritardo alla festa per voi, ma qui sono per riferimento futuro: 'enum XlSaveAsAccessMode pubblico { xlNoChange = 1, xlShared = 2, xlExclusive = 3 }' – killercowuk

2

Beh, ecco come Microsoft fa:

// Save the Workbook and quit Excel. 
m_objBook.SaveAs(m_strSampleFolder + "Book1.xls", m_objOpt, m_objOpt, 
    m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange, 
    m_objOpt, m_objOpt, m_objOpt, m_objOpt); 
m_objBook.Close(false, m_objOpt, m_objOpt); 
m_objExcel.Quit(); 

vedere uno dei loro KB article s.

15

impostando le seguenti proprietà possono anche aiutare:

excelApp.DisplayAlerts = false; 
excelApp.ScreenUpdating = false; 
excelApp.Visible = false; 
excelApp.UserControl = false; 
excelApp.Interactive = false; 
+0

Utile per fare questo a prescindere – AndyM

+0

+ 1 sicuramente utile – Amro

+0

Ho provato un sacco di soluzioni ma questa era l'unica che funziona come dovrebbe! Molto utile! Tks !! –

1

ExcelApp.Interactive = false sopprime qualsiasi finestra di dialogo.

excelApp.ActiveWorkbook.SaveAs(exportDirectory)

1

ho trovato excelApp.ActiveWorkbook.save() che può salvare il file, allora posso uscire senza per chiedere.

2

Basta impostare il ActiveWorkbook.Savedproprietà a vero e si può uscire() senza alcuna finestra di dialogo;

1

myBook.Saved = true;
myBook.SaveCopyAs(xlsFileName);
myBook.Close(null, null, null);
myExcel.Workbooks.Close();
myExcel.Quit();

+0

Questo ha funzionato meglio per me e non le risposte più votate. Quello che mi è piaciuto di questa soluzione è che non ha influenzato altri file Excel aperti dall'utente. – ytoledano

Problemi correlati