ASP - Gerando planilhas no Excel


Que tal fazer uma consulta em seu banco de dados e gerar uma planilha Excel com os dados que você selecionou ?

Parece uma tarefa difícil , mas não é. Vou mostrar como é bem simples.

As vantagens de você gerar uma planilha Excel é poder usar os recursos de cálculos e os recursos gráficos para gerar gráficos que o Excel possui.

Para testar este exemplo você vai precisar ter o Excel instalado. Eu testei este exemplo no Windows 98 com o Personal Web Server e o Excel 97.

O pulo do gato estar em declarar no início do seu arquivo ASP a linha que altera o tipo mime do cabeçalho do arquivo. A linha é :

<%
Response.ContentType = "application/vnd.ms-excel"
%>

Feito isto é só acessar a base de dados e exibir os nomes dos cabeçalhos e das linhas na tabela para gerar sua tabela Excel em tempo de execução.

O código que faz isto é dado a seguir : ( arquivo graficoxls.asp )

<%
Response.ContentType = "application/vnd.ms-excel"

set objconn=server.createobject("adodb.connection")

connpath= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\teste\nwind.mdb"
objconn.Open connpath

set objrs=objconn.execute("select CódigoDoProduto,NomedoProduto,PreçoUnitário from produtos where CódigoDoProduto < 20 ")

%>
<TABLE BORDER=1>
<TR>
<%
'Percorre cada campo e imprime o nome dos campos da tabela
For i = 0 to objrs.fields.count - 1
%>
<TD><% = objrs(i).name %></TD>
<% next %>
</TR>
<%

'Percorre cada linha e exibe cada campo da tabela

while not objrs.eof
%>
<TR>
<% For i = 0 to objrs.fields.count - 1
%>
<TD VALIGN=TOP><% = objrs(i) %></TD>
<% Next %>
</TR>
<%
objrs.MoveNext

wend

objrs.Close
objconn.close
%>
</TABLE>

Nota: Você pode usar um driver ODBC para realizar a conexão com o banco de dados Access , mas o recomendável é usar o provedor OLE DB. Abaixo o código para o driver ODBC:

<% set objconn=server.createobject("adodb.connection")
     connpath="DBQ=" & server.mappath("nwind.mdb")
     objconn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & connpath

     set objrs=objconn.execute("select CódigoDoProduto,NomedoProduto,PreçoUnitário from produtos where CódigoDoProduto < 20 ")
%>

Como exemplo vou acessar a base de dados Nwind.mdb e exibir os campos : CódigoDoProduto,NomedoProduto,PreçoUnitário da tabela Produtos.

O resultado é exibido na figura abaixo:

Resolvi exibir somente alguns produtos para poder mostrar o resultado do processamento da página.

Elementar , não é mesmo !!!

Até a próxima dica ASP...


José Carlos Macoratti