IDÉIA! Classe que gera relatório em HTML

1 resposta
A

Amigos do PJ,

Fiquei matutando em como fazer para o meu programinha gerar relatórios que pudessem ser impressos sem a necessidade de programas adicionais! Daí bolei a idéia abaixo, que gostaria de compartilhar com a comunidade do PJ para trocarmos idéias, se alguém tiver uma sugestão de aprimoramento da idéia! Aí vai:

[color=darkblue]import javax.swing.<em>;

import <a href="http://java.io">java.io</a>.</em>;

import java.util.*;

public class Relatorio {

private static File file;
private static FileOutputStream fos;
private static PrintWriter out;


public static void gerar(JTable tabela, String nome){
    try{
        file = new File("c:/"+nome+".html");
        fos = new FileOutputStream(file);
        out = new PrintWriter(fos);
        
        out.println("&lt;HTML&gt;");
        
        out.println("&lt;HEAD&gt;");
        out.println("&lt;TITLE&gt;Relatório de "+nome+"&lt;/TITLE&gt;");
        out.println("&lt;/HEAD&gt;");
        
        out.println("&lt;BODY&gt;");
        out.println("&lt;H1&gt;Relatório de "+nome+"&lt;/H1&gt;&lt;BR&gt;");
        
        int nColunas = tabela.getColumnCount();
        int nLinhas = tabela.getRowCount();
        
        out.println("&lt;TABLE border='1' width='100%'&gt;");
        
        out.println("&lt;TR&gt;");
        for(int coluna = 0; coluna &lt; nColunas; coluna++){
            out.println("    &lt;TH&gt;"+tabela.getColumnName(coluna)+"&lt;/TH&gt;");
        }
        out.println("&lt;/TR&gt;");
        
        for(int linha = 0; linha &lt; nLinhas; linha++){
            out.println("&lt;TR&gt;");
            for(int coluna = 0; coluna &lt; nColunas; coluna++){
                out.println("    &lt;TD&gt;"+tabela.getValueAt(linha,coluna)+"&lt;/TD&gt;");
            }
            out.println("&lt;/TR&gt;");
        }
        
        out.println("&lt;/TABLE&gt;");
        out.println("&lt;/BODY&gt;");
        out.println("&lt;/HTML&gt;");
        
        out.println("");
        out.flush();
        
        JOptionPane.showMessageDialog(null,"O relatório de "+nome+" foi gerado\ncom sucesso em C:/"+nome+".html","Relatório gerado",JOptionPane.INFORMATION_MESSAGE);
    }
    catch(Exception ex){
        JOptionPane.showMessageDialog(null,"Houve uma falha ao tentar gerar o relatório\n"+ex.getMessage(),"Relatório não gerado",JOptionPane.ERROR_MESSAGE);
    }        
}

}[/color]

1 Resposta

D

gostei da ideia… simples e muito util!
:grin:

Criado 20 de janeiro de 2005
Ultima resposta 21 de jan. de 2005
Respostas 1
Participantes 2