SoloCodigo
CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: Dieguinho. en Martes 7 de Agosto de 2007, 21:42
-
Buenas, estoy haciendo algunas cosas con excel y me acabo de dar cuenta que no puedo cerrar los archivos que uso.
Lo abro de la siguiente forma:
Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlLibro;
xlLibro = xlApp.Workbooks.Open(sRutaExcel, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
y para cerrarlo hago
xlLibro.Close(false, Missing.Value, Missing.Value);
xlApp.Quit();
por ahi vi que agregando esto podria funcionar pero tampoco:
GC.Collect();
no se, si a alguien se le ocurre algo le agradeceria que me de una mano!
saludos.
-
para cerrarlo:
try{xlsApp.Visible = false;}
catch (Exception)
{
try{xlsWb.Close(false, Missing.Value, Missing.Value);}
catch (Exception)
{
try{xlsApp.Quit();} //lo cierro
catch (Exception){}
}
}
finally //A veces por mas que lo cierres queda en memoria... nunca supe por //que...
{
foreach (Process prc in Process.GetProcesses())
{
if (prc.ProcessName == "EXCEL")
{
if (!prc.Responding)
{
prc.Close(); //lo quito de memoria
}
}
}
}
o algo asi, es para que te des una idea y vayas probando, depura ese codigo.. hacete una funcion para q te cierre los procesos, no se.. fijate si te sirve...
Tampoco lo probe, puede tener algun error.. lo escribi asi nomas...
checkealo pero para que te des una idea deberia servir
-
buensimo, lo pruebo entonces.
gracias.
-
Hola.
Yo me encontre con un problema similar al trabajar con excel. Al abrir el libro, leer los datos y cerrarlo luego, me salia un cuadro de dialogo, y acabe optando por matar los procesos EXCEL.exe, ya que quiero que la lectura de los datos se haga de manera transparente para el usuario. Asi funciona de lujo. Pero hay un problema serio.
La aplicacion que yo estoy desarrollando se utiliza en una oficina, y como en todas las oficinas, la posibilidad de que el usuario este trabajando con mi aplicación y excel a la vez es alta, y esta solucion cierra excel sin confirmacion para guardar, lo cual puede suponer la perdida de datos importantes.
Yo aun no he encontrado una buena solucion.
Si sabeis de algo que se pueda hacer yo tambien os lo agradeceria.