Mostrando entradas con la etiqueta Excel. Mostrar todas las entradas
Mostrando entradas con la etiqueta Excel. Mostrar todas las entradas

martes, 23 de diciembre de 2008

Cargar hoja de Excel (.xls) en GridView de Asp.Net

Algo que a menudo sucede, es que nuestros usuarios pueden tener "bases de datos" enteras en sus computadores en formato Excel y por alguna cuestión que desconozco repentinamente quieren comenzar a utilizarlas dentro de un determinado sistema como una fuente de datos para no tener que cargar todo de nuevo.

Una posible aproximación a solucionar este problema es la que trato de mostrar acá, que básicamente seria importar una hoja de MS Excel a un GridView de Asp.Net, una vez cargada en nuestra grilla, poder darles la posibilidad a nuestros usuarios de corregir algún dato. Finalmente quedaría recorrer la grilla y guardar estos datos en nuestra DB o procesarlos de alguna otra manera (si alguien tiene problema con esta ultima cuestión por favor no dude en escribir). También es válido aclarar que en el ejemplo asumo de antemano que conocemos la estructura del Excel que pretende bindearse al nuestro GridView.


Yendo directamente el punto, la idea en es poder utilizar al motor de consultas JET 4.0, de la misma manera en la que lo utilizaríamos para consultar cualquier otra fuente de datos (una base de datos de MS Acces por ejemplo).

Les copio el código, que me parece que habla por sí solo y más abajo un link con una solución de prueba en la que dejo también incluido un archivo de Excel con el que se podrá probar la solución, solo deberán seleccionar el archivo y luego darle un click al botón importar.

 protected void btnImportarNomina_Click(object sender, EventArgs e)
    {
        if (nominaExcel.PostedFile != null)
        {
            List<Lista> listaCollection = new List<Lista>();
         
             StringBuilder sbConnection = new StringBuilder();
                sbConnection.Append("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=");
                if (nominaExcel.PostedFile.FileName.Contains(".xls"))
                {
                    sbConnection.Append(nominaExcel.PostedFile.FileName);
                    sbConnection.Append(";Extended Properties=Excel 8.0;Persist Security Info=False");
                    System.Data.OleDb.OleDbConnection SQLCon = new System.Data.OleDb.OleDbConnection(sbConnection.ToString());
                    System.Data.OleDb.OleDbCommand SQLCom = new System.Data.OleDb.OleDbCommand("select * from [Hoja1$]", SQLCon);
                    System.Data.OleDb.OleDbDataAdapter SQLDa = new System.Data.OleDb.OleDbDataAdapter(SQLCom);
                 
                    SQLCon.Open();
                    IDataReader Odbreader = SQLCom.ExecuteReader();
                    listaCollection.Clear();
                    while (Odbreader.Read())
                    {
                        Lista lista = new Lista();
                        if (!String.IsNullOrEmpty(Odbreader[0].ToString()))
                        {
                            lista.NumeroDocumento = Convert.ToInt32(Odbreader[0]);
                            lista.Nombre = Odbreader[1].ToString();
                            lista.FechaNac = Convert.ToDateTime(Odbreader[2]);
                            listaCollection.Add(lista);
                        }
                    }
                    SQLCon.Close();
                    GridView1.DataSource = listaCollection;
                    GridView1.DataBind();
                }
        }
    }


Ariel Serlin

Para bajar el codigo hace click aqui