public void Leer(string direccion) { //se asegura de que los Double se manejen con punto decimal, no coma decimal System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); Console.WriteLine("Cargando datos a la base, espere..."); //Crea objetos COM Excel.Application xlApp = new Excel.Application(); Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(direccion); Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1]; Excel.Range xlRange = xlWorksheet.UsedRange; baseDatos.abrirConexion(); inicializarTablas(xlRange); //inserta todo baseDatos.cerrarConexion(); //limpieza GC.Collect(); GC.WaitForPendingFinalizers(); //libera los objetos COM para matar el proceso de Excel Marshal.ReleaseComObject(xlRange); Marshal.ReleaseComObject(xlWorksheet); //cerrar y liberar xlWorkbook.Close(); Marshal.ReleaseComObject(xlWorkbook); //quitar y liberar xlApp.Quit(); Marshal.ReleaseComObject(xlApp); }