Escrever um arquivo Excel através de ASP

Através de uma página programada em ASP podemos obter múltiplas saídas, à parte da tradicional em uma página web. Neste caso veremos como realizar uma saída em um formato de tipo CSV, que é um arquivo compatível com Microsoft Excel ou outros sistemas de folha de cálculo comuns. O arquivo CSV, para quem não sabe, é na verdade um arquivo de texto no qual se colocam os valores de cada uma das colunas separados por vírgulas e cada fila de valores em uma linha independente.

Veremos como conseguir um arquivo CSV no qual aparecem uns valores obtidos desde um banco de dados. Para isso, vamos nos apoiar em um script que se distribui como código aberto em licença GNU. Este tipo de licença implica que o Script é gratuito e pode se distribuir, utilizar ou modificar de qualquer maneira, sempre que se cite a procedência original.

Na verdade, o script ao qual nos referimos chama-se GenerateXSL, desenvolvido por Brain Scan Studios, que pode ser encontrado no endereço http://www.brainscanstudios.com/.

O script pode ser instalado em qualquer servidor ASP, em um website ou em um servidor local ou de Intranet, e pode se modificar facilmente. Para utiliza-lo em nossos trabalhos simplesmente teríamos que modificar umas variáveis. Para começar, a variável “sDSN” que contém o DSN origem de nosso banco de dados. Também devemos modificar a variável “sFields”, para atribuir os nomes dos campos do banco de dados, e “sTable”, para indicar o nome da tabela.

O script, que podemos modificar para ajusta-lo a nossas necessidades, é o seguinte:

<%@ 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

%>

Deixe um comentário