visual studio open office microsoft leer create c# excel

studio - Usando Interop con C#, Excel Save cambiando el original. ¿Cómo negar esto?



microsoft.office.interop.excel visual studio 2017 (4)

El problema: cargar una plantilla de hoja de cálculo de Excel. Usar el comando Guardar con un nombre de archivo diferente y luego salir del objeto de interoperabilidad. Esto termina guardando el archivo de plantilla original. No es el resultado que le gusta.

public void saveAndExit(string filename) { excelApplication.Save(filename); excelApplication.Quit(); }

El archivo original abierto es c: / testing / template.xls El nombre del archivo que se pasa es c: / testing / 7777 (date) .xls

¿Alguien tiene una respuesta?

(La respuesta que elegí fue la más correcta y completa a través de wbk.Close () requiere que se le pasen los parámetros. Gracias.)


¿Has probado los SaveAs de la Hoja de Trabajo?


En lugar de utilizar una aplicación Excel, puede usar el objeto Workbook y llamar al método SaveAs (). Puede pasar el nombre del archivo actualizado allí.


  1. Lo mismo en SaveAs
  2. Cada vez que tengo que hacer Interop, creo una biblioteca de clases VB.NET por separado y escribo la lógica en VB. Simplemente no vale la pena hacerlo en C #

La interoperabilidad de Excel es bastante dolorosa. Saqué un viejo proyecto que tenía, hice un poco de violín, y creo que esto es lo que estás buscando. Los otros comentaristas tienen razón, pero, al menos en mi experiencia, hay mucho más para llamar a SaveAs () de lo que esperaría si hubiera utilizado los mismos objetos (sin el envoltorio de interoperabilidad) en VBA.

Microsoft.Office.Interop.Excel.Workbook wbk = excelApplication.Workbooks[0]; //or some other way of obtaining this workbook reference, as Jason Z mentioned wbk.SaveAs(filename, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); wbk.Close(); excelApplication.Quit();

Tengo que amar a todos esos tipos. Missings. Pero creo que son necesarios.