ASP - Gerando XML , XLS e DOC no servidor


Neste artigo mostrarei de forma prática e objetiva como você pode gerar arquivos XML , XLS (Excel) e DOC (Word) no servidor para posterior exibição pelo Navegador padrão.

Nos exemplos estarei acessando dados data tabela classificacao de um banco de dados Access chamado Brasileirao.mdb .  A estrutura da tabela é a seguinte :

A tabela foi alimentada com os dados dos cinco primeiro times na tabela de classificação atual do campeonato Brasileiro (outubro/2004) conforme abaixo:

Em todos os exemplos mostrados estarei fazendo uma conexão usando um provedor OLE DB com o banco de dados access e selecionando dados da tabela classificacao. Estarei usando como diretório de trabalho a pasta ASP subordinada a inetpub\wwwroot. O banco de dados estará na pasta dados. A estrutura do diretório com os arquivos ASP e os arquivos já gerados é mostrada abaixo:

Gerando XML no servidor com ASP

Abaixo temos o código do arquivo asp_xml.asp . A idéia é extrair os dados da tabela e criar um arquivo XML com os dados extraídos:

O código esta comentado:

<html>
<title>Criando um arquivo XML a partir de uma base de dados Access</title>
<body bgcolor="#FFFFFF">
<%
' Define o nome do banco de dados a ser consultado
accessdb="dados/brasileirao.mdb" 
' Define a string de conexao com o Access
cn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath(accessdb)
' Cria um objeto recortdset
Set rs = Server.CreateObject("ADODB.Recordset")
' define a instrução SQL para obter os dados da tabela
sql = "select time,pontos,jogos,vitorias,empates,derrotas from classificacao " 
' Executa o SQL
rs.Open sql, cn
' Move para o primeiro registro
rs.MoveFirst
' Nome do documento XML de saida
arquivo_xml= "classificacao.xml"
' cria um arquivo usando o file system object
set fso = createobject("scripting.filesystemobject")
' cria o arquivo texto no disco com opção de sobrescrever o arquivo existente
Set act = fso.CreateTextFile(server.mappath(arquivo_xml), true)
' cabecalho do XML
act.WriteLine("<?xml version=""1.0""?>")
act.WriteLine("<times>")
'percorre o recordset e com o dados escreve no arquivo XML
do while not rs.eof
act.WriteLine("<time>" & rs("time") & "</time>" )
act.WriteLine("<pontos>" & rs("pontos") & "</pontos>" )
act.WriteLine("<jogos>" & rs("jogos") & "</jogos>")
act.WriteLine("<vitorias>"& rs("vitorias") & "</vitorias>")
act.WriteLine("<empates>"& rs("empates") & "</empates>")
act.WriteLine("<derrotas>"& rs("derrotas") & "</derrotas>")
' move para o proximo registro
rs.movenext
loop
' fecha a tag 
act.WriteLine("</times>")
' fecha o objeto xml
act.close
' Escreve um link para o arquivo xml criado
response.write "Classificação do Campeonato Brasileiro de Futebol até a rodade de 15/10/2004.(Só os cinco primeiros )<P>"
response.write " Para ver o arquivo XML gerado , clique no link a seguir <P>"
response.write "<a href='classificacao.xml'>classificacao</a> (.xml) foi criado com sucesso<br>"
response.write "em " & now() & "<br>"
%>
</body>
</html>

 

O resultado da execução do script asp_xml.asp e mostrado abaixo a esquerda. Quando o usuário clica no link teremos a exibição do arquivo XML.

Gerando arquivos DOC no servidor

Abaixo o arquivo asp_word1.asp que gera arquivos DOC no servidor.

<html>
<title>Criando arquivos MS-Word no Servidor</title>
<body bgcolor="#FFFFFF">
<%
' Define o nome do banco de dados a ser consultado
accessdb="dados/brasileirao.mdb" 
' Define a string de conexao com o Access
cn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath(accessdb)
' Cria um objeto recortdset
Set rs = Server.CreateObject("ADODB.Recordset")
' define a instrução SQL para obter os dados da tabela
sql = "select time,pontos,jogos,vitorias,empates,derrotas from classificacao " 
' Executa o SQL
rs.Open sql, cn
' Move para o primeiro registro
rs.MoveFirst
' Vamos criar 7 arquivos .doc com base na tabela classificacao
response.write "Classificação do Brasileirão - 2004 : Cinco primeiros colocados (Formato MS-Word) <P>"
response.write "Para ver dados do MS-Word clique no link abaixo <P>"
for documents= 1 to 5
 ' Cria um arquivo texto no servidor com o nome do time
 arquivo_doc= rs("time") & ".doc"
 
 ' cria um arquivo file system object
 set fso = createobject("scripting.filesystemobject")
 ' cria o arquivo texto com opção de sobrescrever arquivos ja existentes
 Set act = fso.CreateTextFile(server.mappath(arquivo_doc), true)
 ' Escreve a saida do banco de dados no arquivo doc no mesmo diretorio
act.WriteLine("<html><title>Macoratti.net - Classificacao Brasileiracao & </title>")
act.WriteLine("<body bgcolor='#FFFFFF'> " )
act.WriteLine("time: " & rs("time") & "<br>" )
act.WriteLine("pontos: " & rs("pontos") & "<br>" )
act.WriteLine("jogos: " & rs("jogos") & "<br>")
act.WriteLine("vitorias : "& rs("vitorias") & "<br>")
act.WriteLine("empates :  "& rs("empates") & "<br>")
act.WriteLine("derrotas :  "& rs("derrotas") & "<br>")
act.WriteLine("Página Crida em : " & now ())
act.WriteLine("</body></html>")
' Fecha o objeto
act.close
' Escreve um link para exibir os arquivos doc no navegador
response.write "<a href='" & rs("time") & ".doc'>" & rs("time") & "</a> (.doc) &nbsp;" & now() & "<br>"
' vai para proximo registro
rs.movenext
'cria o proximo arquivo .doc
next
%>
</body>
</html>

 

A execução do arquivo asp_word1.asp é exibida abaixo a esquerda onde temos os cinco arquivos .doc referente a cada time. Ao clicar em um dos arquivos temos a exibição do conteúdo do mesmo pelo Word.

Gerando arquivos XLS no servidor

A seguir o conteúdo do arquivo asp_excel.asp que irá gerar um arquivo XLS no servidor.

<html>
<title>Criando arquivos MS-Excel no servidor</title>
<body bgcolor="#FFFFFF">
<%
' Define o nome do banco de dados a ser consultado
accessdb="dados/brasileirao.mdb" 
' Define a string de conexao com o Access
cn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath(accessdb)
' Cria um objeto recortdset
Set rs = Server.CreateObject("ADODB.Recordset")
' define a instrução SQL para obter os dados da tabela
sql = "select time,pontos,jogos,vitorias,empates,derrotas from classificacao " 
' Executa o SQL
rs.Open sql, cn
' Move para o primeiro registro
rs.MoveFirst
' define o nome do arquivo XLS a ser criado
arquivo_excel= "classificacao.xls"
' cria o arquivo file system object
set fso = createobject("scripting.filesystemobject")
'  Cria um arquivo texto no servidor com o nome do time no mesmo diretorio da aplicacao 
Set act = fso.CreateTextFile(server.mappath(arquivo_excel), true)
' define o cabecalho da tabela
act.WriteLine("<html><body>")
act.WriteLine("<table border=""1"">")
act.WriteLine("<tr>")
act.WriteLine("<th nowrap>Time</th>")
act.WriteLine("<th nowrap>Pontos</th>")
act.WriteLine("<th nowrap>Jogos</th>")
act.WriteLine("<th nowrap>Vitorias</th>")
act.WriteLine("<th nowrap>Empates</th>")
act.WriteLine("<th nowrap>Derrotas</th>")
act.WriteLine("</tr>")
' No laco For next vamos criar uma linha para cada time com os dados da sua classificacao
for documents= 1 to 5
Act.WriteLine("<tr>")
act.WriteLine("<td align=""right"">" & rs("time") & "</td>" )
act.WriteLine("<td align=""right"">" & rs("pontos") & "</td>" )
act.WriteLine("<td align=""right"">" & rs("jogos") & "</td>")
act.WriteLine("<td align=""right"">"& rs("vitorias") & "</td>")
act.WriteLine("<td align=""right"">"& rs("empates") & "</td>")
act.WriteLine("<td align=""right"">"& rs("derrotas") & "</td>")
act.WriteLine("</tr>")
' move para o proximo registro
rs.movenext
' volta a criar a proxima linha da tabela para o time
next
' fecha as tags HTML
act.WriteLine("</table></body></html>")
' fecha o objeto Excel
act.close
response.write "Classificação do Brasileirão - 2004 : Cinco primeiros colocados. (Formato MS-Excel)<P>"
response.write "Para ver classificação no Excel clique no link abaixo <P>"
' Escreve um link para o novo arquivo XLS criado
response.write "<a href='classificacao.xls'>Classificação</a> (.xls) foi criado em " & now() & "<br>"
%>
</body>
</html> 

 

O resultado da execução do script em asp_excel.asp é mostrado abaixo.

Até o próximo artigo ASP...


José Carlos Macoratti