martes, 17 de agosto de 2010

Leer Archivos de Excel 2007 con Asp.Net

En algunas ocasiones es necesario leer informacion almacena en formato de Excel a manera de base de datos y una vez almacenada en un DataSet mostrar los datos por ejemplo en un GridView.

Vamos a ver un ejemplo secillo para leer registros de Excel 2007 y mostrarlos en un grid, y a la ves insertar un nuevo registro capturado desde la interfaz de usuario con ASp.Net

Bien, pues manos a la obra

Aqui tienen el archivo de Excel de Ejemplo, como lo mensionamos antes, tiene formato de Office 2007 (.xlsx)

En un nuevo proyecto Web, agregamos un CommandButton, un label y un Gridview, tal como se observa en la imagen:



El Codigo:

En el Button, agregamos:

Dim archivo As String 'Declaramos una variable de tipo String para definir la ruta al archivo
archivo = Server.MapPath("agenda.xlsx") 'Asignamos la ruta
GridView1.DataSource = LeerArchivoExcel(archivo) ' Invocamos a la funcion LeerArchivoExcel, la cual devolverá un Dataset y sera el origen de los datos para el GridView
GridView1.DataBind()

El codigo de la funcion es el siguiente:
Private Function LeerArchivoExcel(ByVal file) As DataSet

'La cadena de conexion para leer un archivo de Excel 2007 es Microsoft.ACE.OLEDB.12.0, tal como se muestra a continuación
Dim m_sConn1 As String = "Provider=Microsoft.ACE.OLEDB.12.0;" & _"Data Source=" & file & ";" & _"Extended Properties=""Excel 12.0;HDR=YES"""

'Generamos objeto de conexion
Dim conn2 As New OleDbConnection(m_sConn1)

'Definimos la consulta SQL para leer la informacion del archivo de Excel, noten que hacemos referencia a las Hojas, se puede leer cualquier hoja, siempre y cuando indiquemos el nombre con un signo $ y encerrado entre []
Dim consulta as String
consulta="Select * From [Hoja1$]"

'Lo siguiente ejecutar la conexion y la consulta y llenar el DataSet que devolvera la función
Dim da As New OleDbDataAdapter(consulta, conn2)

Dim ds As New DataSet()

Try
da.Fill(ds)
Return ds
Catch ex As Exception
Me.lbError.Text = ex.Message & file
Finally
conn2.Close()
End Try
End Function


Los espacio de nombres a usar son:
Imports System.Data.OleDb
Imports System.Data

y eso es todo, en la proxima publicacion mostraremos como agregar un registro al archivo de Excel desde ASP.Net


2 comentarios:

Angeles dijo...

Muy buen trabajo. gracias...

bleach01 dijo...

muchas gracias!!! por este aporte
me sacaste de un apuro T_T gracias

AlertPal- Pagos Seguros en Internet