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.
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...