Utilizar Aado:Net y Asp:Net Para Acceder Datos e Excel
Introducción
No es un hecho poco común el que nos encontremos con la necesidad de acceder desde nuestras aplicaciones, ya sean estas de escritorio (Win32) o de Internet (ASP.NET), a datos almacenados en otros formatos que no sean bases de datos. En este articulo les mostraremos como leer una planilla Excel subida por un usuario a unsitio Web utilizando ADO.NET.
Limitaciones Actuales
Uno de los casos con los que podemos encontrarnos es la necesidad de leer los datos de una planilla Excel. De acuerdo al escenario en el que nos movamos, la lectura podría llegar a tener grandes problemas de escalabilidad. Supongamos que estamos desarrollando un sitio Web y le brindamos al usuario la posibilidad de subir al sitio un archivo enformato Excel para, la importación de esos datos en una Base de Datos. Una de las posibilidades de leer un archivo XLS, es usar Excel mismo instanciándolo mediante OLE Automation.
‘Creo un Nuevo objeto Excel.
Dim oExcelApp As Excel.Application
oExcelApp = New Excel.Application()
La primera desventaja es que esta instanciación implica Excel corriendo en todo su esplendor, lo que consume recursosen el Servidor. Ni pensar si esta tarea esta siendo realizada simultáneamente por varios usuarios.
Otro inconveniente con el que podríamos llegar a toparnos es la necesidad de una sesión de usuario abierta en el servidor para que pueda correr Excel. Punto de seguridad en contra para el administrador del equipo.
Solución
Para evitar estos inconvenientes de seguridad y por sobretodo de escalabilidad, es que les detallaremos los pasos a seguir para poder acceder a datos almacenados en forma de tablas dentro de una hoja de cálculo de Excel, utilizando los servicios de ADO.NET, lo que nos permitirá manipularlos como si se tratara de tablas normales de Access o SQL Server.
Generando la planilla de ejemplo
Como ejemplo, empezaremos creando una hoja cálculo en Excel, con datosde nuestra colección de CD’s:
Uno de los requisitos más importantes en esta tarea es definir con un nombre al área de datos (rango de celdas). Este rango de celdas es el que definirá una Tabla en términos de ADO.
Para ello debemos seleccionar el rango y luego seleccionar la opción “Definir ...” del menú “Insertar \ Nombre”, en nuestro caso ingresaremos “miTabla”. Más adelante veremos que“miTabla” pasará a ser el identificador utilizado en nuestras instrucciones SQL.
Esta manera de trabajar asignando nombres a los rangos de celdas nos permite tener diferentes tablas dentro de una misma planilla, sólo debemos asignar diferentes nombres a cada uno de esos rangos. Podemos pensar entonces en la planilla Excel como una Base de Datos con un conjunto de tablas no relacionadas definidas poráreas de datos con Nombre
Otro punto a tener en cuenta es que ADO.NET considera que en la primera fila del rango seleccionado están los nombres de los campos de la tabla. Si el rango de celdas no contiene los nombres de los campos (títulos de columnas), debemos seleccionar una fila más por encima de los datos aunque las celdas estén vacías, en cuyo caso ADO.NET tomará nombres por defecto de lasiguiente manera: “F1” para la primera columna, “F2” para la segunda, “F3”, para la tercera, etc. Si no lo hacemos de esta manera, la primera fila de datos se considerará como nombres de los campos, con lo que habremos perdido el primer “registro” de nuestra tabla.
Una vez finalizada la carga de datos en la tabla de ejemplo, podemos comenzar a trabajar con nuestro proyecto, que en este caso,será una aplicación ASP.NET.
Upload de un archivo en ASP.NET, paso a paso
Esta aplicación nos permitirá hacer un “Upload” (subir un archivo) de un documento Excel a un directorio que nosotros definiremos en el servidor de nuestro sitio Web (por Ej.: C:\Inetpub\wwwroot\ExcelAdo\Upload). Una vez que la planilla se encuentre en el servidor, visualizará una grilla con los datos contenidos en ella....
Regístrate para leer el documento completo.