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