Desde nuestra aplicación ASP vamos a poder acceder a una hoja Excel para leer su contenido.
Para realizar el acceso a la hoja de Excel vamos a utilizar el modelo de acceso a datos ADO (Access Data Objet), de igual forma que si estubieramos realizando una consulta sobre una base de datos Access.
Para ello lo primero que hay que hacer es dar un nombre al rango de registros que queremos mostrar en nuestra aplicación. Seleccionamos los registros a mostrar:
En el menú «Insertar – Nombre – Definir …». Damos un nombre a nuestro rango de datos. Estamos simulando la creación de un RecordSet del modelo ADO.
En nuestro caso le damos el nombre «Alumnos» al rango de datos.
Para conectarnos a la hoja Excel deberemos de indicarle a la aplicación en la conexión que el DRIVER de acceso es el de Microsoft Excel y no el de Microsoft Access, el que utilizamos para las bases de datos.
Set conexion = Server.CreateObject("ADODB.Connection")
conexion.Open "DBQ=" & Server.MapPath("Libro1.xls")
& ";DRIVER={Microsoft Excel Driver (*.xls)};"
A partir de este momento accederemos al rango de datos «Alumnos» como si fuese una tabla de una base de datos. Es decir, que tendremos los métodos MoveNext, MovePrevious, EOF, BOF,…..
Un pequeño problema es que nuestras columnas no tienen un nombre, como sucede en las bases de datos. Es por ello que no podremos poner rs(«alumno»), sino que tendremos que ir columna por columna.
Para recorrer todas las columnas y mostrar sus valores
Dim columnas
columnas = rs.Fields.Count
Do While Not rstExcel.EOF
For I=0 to columnas - 1
Response.Write rs.Fields.Item(I).Value
Next I
Loop
Otra cosa que tenemos que tener en cuenta es el tipo de celda que tenemos. Si es una celda con un texto, lo que deberemos de mostrar de dicho campo es su nombre (name), mientras que si lo que queremos es mostrar su valor deberemos de usar value.
Response.Write rs.Fields.Item(I).Value
Response.Write rs.Fields.Item(I).Name