Seções iMasters
Linguagens

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!

Comente também

10 Comentários

Rosani Teixeira da Silva

Não consegui fazer com que aparecesse a barra do excel no Browser quando testei o exemplo graficoxls.asp.
O que pode ter dado errado ?

Fábio Bressane Moreira

Como gerar a palnilha no formato excel mesmo, nativo?
Por que na verdade ele abre como html.
To perguntando isso pq se eu tentar fazer isso de um pocket nao funciona
pode me ajudar?

bruno torres viana

Amigo, este código não gerou nenhum planilha no excel e sim um arquivo html. Qual é a real solução????

RUI MORAES

Existe possibilidade de através de um formulário html gerar um documento do excel sem ter banco de dados?

Levi Viana

Gostaria de saber se a possibilidade de editar as celulas (fonte, tamanho, cor, etc…)

Júnior Torres

Não apareceu as células do excel como no exemplo, será que depende da versão do browser? o meu browser é I.E 7

Roberta Lima Pereira

Muito bom o artigo, fiz o teste aqui e funcionou direitinho….

Daniel Winther Checchia

muito bem gafanhoto!!!

Gostaria de saber se tem como uma pagina asp ao clicar em um botão ele importar um determinado valor da pagina para uma celula de uma planilha no meu computador.
A pagina estará em um servidor SQL Server e a planilha do excel vai estar em outro computador, no caso o meu.
Teria como??
Obrigado

Regina Lopes

Para gerar um arquivo XLS, basta inserir a linha abaixo:

Response.ContentType = “application/vnd.ms-excel”
response.AddHeader “content-disposition”, “inline; filename=nomedoarquivodesejado.xls”

Para mim funcionou.

Sucesso a todos!

Criativos Ilimitada
http://www.criativosilimitada.com.br
Solução Criativa em Comunicação

Qual a sua opinião?