 ASP - 
Gerando XML , XLS e DOC no servidor
          
 
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)  " & 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