> Manuales > Taller de ASP

Cómo generar utilizando ASP un archivo CSV, compatible con Excel y otras hojas de cálculo, a partir de una tabla de la base de datos

Desde una página programada en ASP podemos obtener múltiples salidas, aparte de la tradicional en una página web. En este caso vamos a ver cómo realizar una salida en un formato de tipo CSV, que es un archivo compatible con Microsoft Excel u otros sistemas de hoja de cálculo comunes. El archivo CSV, para el que no lo sepa, es en realidad un fichero de texto en el que se ponen los valores de cada una de las columnas separados por comas y cada fila de valores en una línea independiente.

Veremos cómo conseguir un archivo CSV en el que figuran unos valores obtenidos desde una base de datos. Para ello vamos a apoyarnos en un script que se distribuye como código abierto en licencia GNU. Este tipo de licencia implica que el Script es gratuito y se puede distribuir, utilizar o modificar de cualquier manera, siempre que se cite la procedencia original.

En concreto, el script al que nos referimos se llama GenerateXSL, desarrollado por Brain Scan Studios, que se puede obtener en la dirección http://www.brainscanstudios.com/dev_projects/GenerateXLS/.

El script se puede instalar en cualquier servidor ASP, en un sitio web o en un servidor local o de Intranet, y se puede modificar fácilmente. Para utilizarlo en nuestros trabajos simplemente tendríamos que modificar unas variables. Para empezar, la variable "sDSN" que contiene el DSN origen de nuestra base de datos. También debemos modificar la variable "sFields", para asignarle los nombres de los campos de la base de datos, y "sTable", para indicar el nombre de la tabla.

El script, que podemos modificar para ajustarlo a nuestras necesidades, es el siguiente:

<%@ Language=VBScript %>
<%
' GenerateXLS Version 1.0 by Brian Kirsten (bkirsten@brainscanstudios.com)
' 1st modified 11/29/00
' 2nd modification 10/25/02
' copyright Ó 2000 Brain Scan Studios, Inc. (http://www.brainscanstudios.com)
' source distributed under the gnu general public license.
' let me know if your site is using the code i will put a link up to your page!

Dim sTable
Dim sDSN
Dim sFields

sDSN = "<DSN>" 'Name of your DSN
sFields = "<FIELDS>" 'List of fields comma delimited
sTable = "<TABLE_NAME>" 'Name of your table or View

Set DB = Server.CreateObject("ADODB.Connection")
Set RS = Server.CreateObject("ADODB.Recordset")

DB.Open sDSN

RS.Open "select "& sFields &" from "& sTable,DB

Response.ContentType = "application/csv"
Response.AddHeader "Content-Disposition", "filename=mydata.csv;"
' lets print the fields on top

for i = 0 to RS.Fields.Count-1
if i = (RS.Fields.Count - 1) then
Response.Write lcase(RS.Fields(i).Name)
else
Response.Write lcase(RS.Fields(i).Name) & ","
end if
next

Response.write vbNewLine
Response.write vbNewLine

while not RS.EOF

for u=0 to RS.Fields.Count - 1
if u = (RS.Fields.Count - 1) then
Response.Write RS.Fields(u).Value
else
Response.Write RS.Fields(u).Value & ","
end if
next

response.write vbNewLine

rs.MoveNext
wend

Response.write vbNewLine
Response.write vbNewLine

Set RS = Nothing
Set DB = Nothing

%>


Podemos acceder a la página de los autores del script , donde podemos encontrar también un enlace para ver el ejemplo en funcionamiento.

Miguel Angel Alvarez

Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...

Manual