コード例 #1
0
        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);
        }