visual studio office microsoft example c# excel excel-interop

studio - Cómo guardar/sobrescribir un archivo de Excel existente con Excel Interop-C#



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

Básicamente, todo lo que necesitas es ExcelApp.DisplayAlerts = False . Así es como lo hago:

ExcelApp.DisplayAlerts = False ExcelWorkbook.Close(SaveChanges:=True, Filename:=CurDir & FileToSave)

Espero que esto ayude

¿Hay alguna manera de guardar los cambios en una hoja de cálculo de Excel a través de la interoperabilidad de Excel (en este caso, le estoy agregando una hoja de cálculo) sin pedirle al usuario si desea sobrescribir el archivo existente con los cambios? No quiero que el usuario vea la hoja de cálculo abierta en mi aplicación, por lo que aparece un cuadro de mensaje preguntándoles si desean sobrescribir el archivo parece muy fuera de lugar y posiblemente confuso para el usuario.

Estoy usando el método workbook.SaveAs (fileloaction).

Aquí es donde estoy inicializando los objetos de referencia COM para la interoperabilidad de Excel.

private Excel.Application app = null; private Excel.Workbook workbook = null; public Excel.Workbook Workbook { get { return workbook; } set { workbook = value; } } private Excel.Worksheet worksheet = null; private Excel.Range workSheet_range = null;

Abajo está el código que estoy usando para cerrar / guardar el archivo de Excel. La línea de método workbook.close () es la que, según se informa, está lanzando la excepción no controlada.

workbook.Close(true, startForm.excelFileLocation, Missing.Value); Marshal.ReleaseComObject(app); app = null; System.GC.Collect();


Sé que este es un post antiguo, pero quería compartir una manera de hacer que esto funcione sin causar una posible frustración en el futuro.

Primero, lo que no me gusta de usar: ExcelApp.DisplayAlerts = False

Establecer esta bandera establecerá esta propiedad en el archivo de Excel, no solo en su programa. Esto significa que si un usuario realiza cambios en el archivo y lo cierra (haciendo clic en la X), no se le pedirá que guarde el archivo y causará frustración más adelante. También deshabilitará cualquier otra solicitud que Excel normalmente publique.

Me gusta comprobar si el archivo existe antes de guardarlo:

if (File.Exists(SaveAsName)) { File.Delete(SaveAsName); }


Solo este código requerirá una alerta o una plantilla para dejar de anular ya en uso

ExcelApp.DisplayAlerts = False