2009-04-24 24 views
10

Podría abrir y escribir en el archivo Excel, pero cuando intento guardar el archivo pasando una ruta a él, la operación de guardar aparece con el cuadro de diálogo Guardar. Yo estaba esperando para ahorrar Quitely el archivo en la ruta especificadaC# y Excel Problema de interoperabilidad, al guardar el archivo Excel no es fluido

El código es la siguiente:

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

donde, exportToDirectory es: "C: \ Archivos \ strings.xlsx".

PD: Ya he comprobado con la versión de Excel y un problema similar.

Gracias

Respuesta

15

Es necesario utilizar Workbook.SaveAs en lugar de 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

Alguna idea de lo que el valor numérico para Excel.XlSaveAsAccessMode.xlExclusive es? Necesito pasar esto a esta función en un archivo de script de Windows. – MrVimes

+1

@MrVimes Totalmente tarde a la fiesta para usted, sin embargo aquí están para referencia futura: 'XlSaveAsAccessMode pública enumeración { xlNoChange = 1, xlShared = 2, xlExclusive = 3 }' – killercowuk

2

Bueno, así es como lo hace Microsoft:

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

ver a uno de sus KB article s.

15

estableciendo las siguientes propiedades también podrían ayudar:

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

Útil para hacer esto sin tener en cuenta – AndyM

+0

+ 1 definitivamente útil – Amro

+0

¡Intento mucha solución pero esta fue la única que funciona como debería! ¡Muy útil! ¡¡Tks !! –

1

ExcelApp.Interactive = false suprime cualquier cuadro de diálogo.

excelApp.ActiveWorkbook.SaveAs(exportDirectory)

1

He encontrado excelApp.ActiveWorkbook.save() que puede guardar el archivo, entonces puedo salir sin por preguntar.

2

acaba de establecer la ActiveWorkbook.Savedpropiedad a cierto y puede dejar de fumar() sin ningún cuadro de diálogo;

1

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

+0

Esto funcionó mejor para mí y no las respuestas mejor calificadas. Lo que me gustó de esta solución es que no afectó otros archivos de Excel abiertos por el usuario. – ytoledano

Cuestiones relacionadas