Microsoft Excel en ASP .NET[Leer una hoja de cálculo de Excel desde ASP .NET con Visual Basic .NET]
Fecha: 02/Feb/2006 (1 de Febrero
de 2006)
|
Introducción
Microsoft tiene un artículo en su KB, ID 306572, titulado "CÓMO: Consultar y presentar datos de Excel mediante ASP.NET, ADO.NET y Visual C# .NET", que propone una manera sumamente sencilla de acceder a datos de Excel y mostrarlos en un documento ASP .NET. En este ejercicio se adapta el artículo de Microsoft a Visual Basic .NET y se comenta el código más ampliamente.
Resumen
ADO .NET proporciona métodos para conectar con diferentes almacenes de datos. En este ejercicio de Visual Basic .NET se utilizan clases pertenecientes a los espacios de nombres System.Data y System.Data.OleDb para conectar con una hoja de cálculo de Microsoft Excel. Un grupo de celdas de la hoja de cálculo, englobadas en un rango con nombre, hace la función de tabla del DataSet que es mostrada en el DataGrid.
Hoja de cálculo
- creamos la hoja de cálculo en Microsoft Excel
- seleccionamos las celdas (filas y columnas) con los datos que deseamos transferir a ASP .NET
- con las celdas seleccionadas, para crear el rango de celdas tenemos que ir al menú Insertar / Nombre / Definir
- damos un nombre al rango seleccionado y pulsamos Aceptar (este nombre es el que vamos a emplear como nombre de tabla en la sentencia SQL de selección que rellenará un DataSet desde un OleDbDataAdapter)
- guardamos el archivo de Excel
ASP .NET
- creamos la página dinámica aspx que contiene un objeto DataGrid (de nombre rejilla en el ejemplo)
- creamos la página de código VB de apoyo
- conectamos con la hoja de Excel usando una cadena de conexión de tipo OleDb (se usa el proveedor OLEDB de Microsoft Jet). En este ejemplo, el archivo de Excel, llamado exceldata.xls, contiene una serie de cifras que constituyen la altimetría de un puerto de montaña (Sierra Nevada) y el nombre del rango de celdas es sierra:
Dim cadenaCon As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & Server.MapPath("exceldata.xls") & ";" & _ "Extended Properties=Excel 8.0;" Dim con As OleDbConnection = New OleDbConnection(cadenaCon) con.Open() adaptador1 = New OleDbDataAdapter("SELECT * FROM sierra", con) datos1 = New DataSet adaptador1.Fill(datos1, "XLData") rejilla1.DataSource = datos1.Tables(0) rejilla1.DataBind() con.Close()el DataGrid se puede formatear a nuestro gusto (colores, fuentes, etc.) y, si contiene un número elevado de filas, se puede paginar:
el libro de Excel puede contener más de una hoja y es posible enlazar varios DataGrid con varios nombres de rangos diferentes Página dinámica ASPX
Puedes ver aquí la página generada de forma dinámica.
Espacios de nombres usados en el código de este artículo:
System.Data
System.Data.OleDb
Fichero con el código de ejemplo: miliuco_excel.zip - 72 KB
(MD5 checksum: [B1105BBE0C45CA47A1B0EC93F9731957])