jueves, 18 de febrero de 2016

Carga de datos mediante un archivo Excel

En algunas ocasiones es necesario hacer una carga de datos desde un archivo Excel, extensión "XLS", para hacer más ágil el trabajo de nuestros usuarios, en esta entrada vamos a ver como hacerla y ver que tipo de inconvenientes se me presentaron al hacer la Webform.

Lo primero será arrastrar un elemento de tipo FileUpload, uno de tipo Button y otro de tipo Label para ahí colocar cualquier mensaje que pueda presentarnos nuestra Webform.



Una vez teniendo estos 3 elementos, vamos a teclear código, para eso le daremos doble click a nuestro elemento Button para ir al evento del mismo. Cabe mencionar que en nuestra solución manejamos varios proyectos, uno donde tenemos nuestras entidades, otro donde tenemos el acceso a datos, otro donde vienen las reglas de negocio y el sitio web, que es nuestra interfaz de usuario.

Dentro del evento Click de nuestro botón vamos a poner el siguiente código:

try
{
  if (FileUpload1.HasFile)
  {
     FileInfo info = new FileInfo(FileUpload1.PostedFile.FileName); // System.IO
     if (info.Extension.ToString() != ".xls")
         {
        Label10.Text = "El archivo Seleccionado no es correcto";
          }
      else     
      {
       ///// CargaExcel es la tabla donde se almacenaran los datos que se van a cargar en nuestra base de datos
         AdminCargaExcel Administra = new AdminCargaExcel();
         CargaExcel Datos = new CargaExcel();
        
         FileUpload1.SaveAs(@"C:\temp\" + FileUpload1.FileName);

        string CadenaConexion = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                                "Data Source=C:\\temp\\"+FileUpload1.FileName+
                                ";Extended Properties=\"Excel 8.0;HDR=NO\"";
        OleDbConnection con = new OleDbConnection(CadenaConexion);
        string strSQL = "SELECT * FROM [Hoja1$]";
        OleDbDataAdapter da = new OleDbDataAdapter(strSQL, con);
        DataSet ds = new DataSet();
        da.Fill(ds);
      
        try
        {     
         if (ds.Tables.Count > 0)
             foreach (DataRow row in ds.Tables[0].Rows)
             {
                 Datos.DatoCargado = Convert.ToString(row[0].ToString().ToUpper());
                 Administra.Guardar(Datos);
             }  
        }
        catch (Exception ex)
        {
            Label10.Text = ex.Message;
        }
      }
    }
   else
   {
        Label10.Text = "NO CARGO EL ARCHIVO";
   }
}
catch (Exception ex)
{
     Label10.Text = ex.Message;
}


Ese será el código que necesitaremos, con esto se hace la carga. Aquí esta el archivo Excel

 
 
Así luce mi Webform



Le doy click a examinar



Selecciono el archivo y le doy click al botón


Y listo, ya se hizo la carga en la base de datos



En modo desarrollo todo jalaba de maravilla, seleccionaba el archivo, hacia las validaciones y cargaba la información, ya era momento de ponerlo en producción, y ZAZ!!!


"El proveedor 'Microsoft.Jet.OLEDB.4.0' no está registrado en el equipo local."

Algo que no me esperaba y entré un poco en pánico, pensé que seria necesario instalar algo, busqué en algunos foros y leía que tenia que instalar "AccessDatabaseEngine", yo no quería instalar nada en nuestro servidor, eso no estaba en los planes, pero hubo una luz al final del túnel y aparecía ante mi la respuesta, todo estaba en el Administrador del IIS.

Dentro del Administrador del IIS, en "Conexiones", seleccionamos "Grupo de aplicaciones"

 


Seleccionamos el grupo de aplicaciones al cual pertenece nuestra aplicación, en mi caso es "DefaultAppPool", le damos un click derecho y nos vamos a "Configuración Avanzada..."

 Ahí nos mostrará la siguiente pantalla



Y lo único que hay que hacer es, en la parte de "(General)", ubicamos "Habilitar aplicaciones de 32 bits" y modificamos de "False" a "True"



LISTO!!!! con esto quedará resuelto este pequeño inconveniente!!!

Espero y les sirva de algo mi experiencia, les dejo a su disposición mi correo para cualquier duda, aclaración o sugerencia, ricegamo@hotmail.com

Saludos

No hay comentarios:

Publicar un comentario