martes, 16 de mayo de 2017

Leer archivos de excel desde un directorio de manera dinamica


Aquí después de un tiempo, en esta ocasión vamos a ver como leer archivos (excel )desde .NET y poder recorrer las hojas de manera dinámica.


Por ejemplo vamos a recorrer todos los archivos que hay en esta ruta y lo guardamos en una colecciòn.

 DirectoryInfo di2 = new DirectoryInfo(@"\\192.168.1.111\Carpeta\SubCarpeta");


ObjetoPrint oObjetoPrint = new Migrar.ObjetoPrint();
                List<ObjetoPrint> oListaObjetoPrint = new List<Migrar.ObjetoPrint>();


    foreach (var fi in di2.GetFiles())
                {
                    // Console.WriteLine(fi.Name);
                    oObjetoPrint = new Migrar.ObjetoPrint();
                    oObjetoPrint.FechaCreacion = fi.CreationTime;
                    oObjetoPrint.NombreArchivo = fi.Name.ToString();
                    oListaObjetoPrint.Add(oObjetoPrint);
                }



  string[] Hojas = GetExcelSheetNames(Ruta);

Con este metodo vamos a obtener las hojas del archivo que deseamos.

Aqui leemos el contenido de una hoja en especifico.

oObject = GetDataExcel(Ruta, Hojas[0]);

Este resultado podemos migrarlo a un temporal.

Slds


     // Establishing connection
                SqlConnectionStringBuilder cb = new SqlConnectionStringBuilder();
                    cb.DataSource = "192.168.1.111";
                    cb.InitialCatalog = "TUBD";
                    cb.IntegratedSecurity = true;
                    SqlConnection cnn = new SqlConnection(cb.ConnectionString);

                 

                    // Initializing an SqlBulkCopy object
                    SqlBulkCopy sbc = new SqlBulkCopy("server=192.168.4.111;database=TUBD;Integrated Security=SSPI");

                    // Copying data to destination
                    sbc.DestinationTableName = "TEMP";
                    sbc.WriteToServer(oObject);



  private static String[] GetExcelSheetNames(string excelFile)
        {
            OleDbConnection objConn = null;
            System.Data.DataTable dt = null;

            try
            {
                // Connection String. Change the excel file to the file you
                // will search.
                String connString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                    "Data Source=" + excelFile + ";Extended Properties=Excel 8.0;";
                // Create connection object by using the preceding connection string.
                objConn = new OleDbConnection(connString);
                // Open connection with the database.
                objConn.Open();
                // Get the data table containg the schema guid.
                dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

                if (dt == null)
                {
                    return null;
                }

                String[] excelSheets = new String[dt.Rows.Count];
                int i = 0;

                // Add the sheet name to the string array.
                foreach (DataRow row in dt.Rows)
                {
                    excelSheets[i] = row["TABLE_NAME"].ToString();
                    i++;
                }

                // Loop through all of the sheets if you want too...
                for (int j = 0; j < excelSheets.Length; j++)
                {
                    // Query each excel sheet.
                }

                return excelSheets;
            }
            catch (Exception ex)
            {
                return null;
            }
            finally
            {
                // Clean up.
                if (objConn != null)
                {
                    objConn.Close();
                    objConn.Dispose();
                }
                if (dt != null)
                {
                    dt.Dispose();
                }
            }
        }



      static public DataTable GetDataExcel(
  string fileName, string sheetName)
        {
            try
            {
                string connString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                     "Data Source =" + fileName + ";Extended Properties=Excel 8.0";


                using (OleDbConnection cnn = new OleDbConnection(connString))
                {
                    OleDbCommand cmd = cnn.CreateCommand();
                    // cmd.CommandText = string.Format("SELECT * FROM [{0}]", sheetName);

                    //cmd.CommandText = "SELECT * FROM [{0}]";
                    cmd.CommandText = string.Format("SELECT * FROM [{0}]", sheetName);
                    OleDbDataAdapter da = new OleDbDataAdapter(cmd);
                    DataTable dt = new DataTable();

                    da.Fill(dt);

                    return dt;
                }
            }
            catch (Exception)
            {
                throw;
            }
        }

No hay comentarios:

Publicar un comentario