LECTURA DE ARCHIVO EXCEL CON ASP

arleni_abanto
21 de Mayo del 2003
NECESITO LEER UN ARCHIVO DE EXCEL PARA PODER MOSTRAR LOS DATOS EN UNA TABLA EN UNA PAGINA WEB.

POR FAVOR CUALQUIER AYUDA SERA AGRADECIDA.

_ssX
21 de Mayo del 2003
'Asigna a la variable Path, la ruta del archivo *.xls
Path=Server.MapPath("Ejercicio1.xls")

'Establece una conexin entre el servidor asp y una base de datos
Set ConexionBD = Server.CreateObject("ADODB.Connection")


'Abrimos el objeto con el driver especfico para Microsoft Excel
ConexionBD.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & Path

'Crea un objeto de tipo recordset para retornar la consulta sql
Set rsVac = Server.CreateObject("ADODB.Recordset")

'Se abre el recordset, sealando como tabla el rango de celdas Excel llamado Feriado.
rsVac.Open "Select * From Feriado order by Oficina, Nombre", ConexionBD,3,3

Como pueden observar, bsicamente el cdigo es el mismo que utilizamos para conectarnos con Access. Las principales diferencias son dos:

Para abrir la conexin con la base de datos utilizamos el Driver especfico para Microsoft Excel.


Al abrir el recordset, en la sentencia SQL hacemos referencia al nombre de un rango de celdas de Excel, en vez de referirnos a una tabla especfica de Access. Para asignar un nombre a un rango de celdas, en MSExcel debemos seleccionar el men Insertar, la opcin Nombre y la subopcin Definir. Luego, asignamos el nombre Feriado al rango y por ltimo, en la casilla "Se refiere a:" seleccionamos el rango =FERIADO!$A$1:$G$6. Ahora, si este procedimiento no nos parece muy claro, podemos reemplazar el nombre Feriado de la consulta SQL por el rango a utilizar. En nuestro ejemplo, nos quedara as:

'Se abre el recordset, sealando como tabla el rango de celdas Excel llamado Feriado.
rsVac.Open "Select * From A1:G6 order by Oficina, Nombre", ConexionBD,3,3

Una vez que hemos creado el objeto recordset, no nos queda ms que comenzar a utilizarlo exactamente igual que si se tratara de datos Access. Por ejemplo, para mostrar en una tabla el contenido de algunos campos del recordset, bastara que utilizramos el siguiente cdigo:

'Nos posicionamos al principio del recordset, por cualquier cosa
rsVac.MoveFirst

'Y por fin comenzamos a escribir la tabla de resultados
'Primero los nombres de las columnas (el encabezado de la tabla)
Response.Write "<th>" & rsVac.Fields.Item(0).Name & "</th>" & vbCrLf
Response.Write "<th>" & rsVac.Fields.Item(1).Name & "</th>" & vbCrLf
Response.Write "<th>" & rsVac.Fields.Item(6).Name & "</th>" & vbCrLf

'Y por ltimo, el cuerpo de los datos
Do While Not rsVac.EOF
Response.Write "<tr>" & vbCrLf
Response.Write "<td>" & rsVac(0) & "</td>"
Response.Write "<td>" & rsVac(1) & "</td>"
Response.Write "<td>" & rsVac(6) & "</td>"
Response.Write "</tr>" & vbCrLf
rsVac.MoveNext
Loop
Response.Write "</table>"

'Se cierra y se destruye el objeto recordset
rsVac.Close
Set rsVac = Nothing

'Se cierra y se destruye el objeto connection
ConexionBD.Close
Set ConexionBD = Nothing