2012-01-11 8 views
23

Tengo un libro de Excel con una función de celda personalizada no dependiente del tiempo que estoy abriendo desde una aplicación C# WindowsForms usando Interop .Sobresalir. Leí cuatro valores, no realicé cambios/cálculos explícitos, luego lo cerré desde C#.Cómo cerrar-sin-guardar un libro de Excel/xlsm, con una función personalizada, desde C#

Cuando intento cerrar directamente (sin guardar), aparece un mensaje para guardar. Sospecho que esto se debe a que Excel está interpretando el auto-recálculo en abierto como la creación de un cambio, aunque en realidad nada cambia numéricamente o de forma. También configuré Excel.Application.Calculation = Excel.XlCalculation.xlCalculationManual. ¿Cómo evito que aparezca el mensaje de guardado y solo cierre sin guardar?

+2

también se puede hacer un 'workbook.Saved = true' antes de guardar para que Excel aplicación sabe que esto ya se guarda y se no hay necesidad de solicitar .. – nawfal

Respuesta

41

Al utilizar los objetos de Excel, asegúrese de cerrar el libro así:

Excel.Application xlApp ; 
Excel.Workbook xlWorkBook ; 
Excel.Worksheet xlWorkSheet ; 
object misValue = System.Reflection.Missing.Value; 

xlApp = new Excel.ApplicationClass(); 
xlWorkBook = xlApp.Workbooks.Add("Yourworkbook"); 

xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 

....do your stuff 

xlWorkBook.Close(false, misValue, misValue); 

xlApp.Quit(); 

El falso en el método close indica no guarde los cambios.

+1

¡Sí! Eso lo solucionó ¡Gracias! –

+0

¿Es realmente necesario pasar los argumentos 'System.Reflection.Missing.Value' al método' Close'? Estoy cerrando solo pasando falso, y todavía no he tenido ningún problema. –

+1

@JeremyCook Érase una vez, tal vez la necesidad de hacerlo cambió con una actualización de punto. – Motes

0

Recientemente estaba trabajando en la automatización de Excel y me encontré con este enlace es solución perfecta Kill Process Excel C#

Cuestiones relacionadas