Bom dia amigos eu tenho a seguinte dúvida
É possível eu gerar um relatório com alguns dados vindo de um banco e depois imprimir esse formulário? Se tiver como faço isso? e onde consigo maiores informações sobre isso?
[]´s
Logan
Pedrosa
Novembro 14, 2006, 12:40pm
#2
po eu tenho uma classe em java que gera esse relatório em html… não sei se é isso que procura… se for eu posso te passar ai é só vc criar um método que insira nela os dados para o relatorio ser gerado.
Oi Regis
Fico muito agradessido se vc puder me passar essa classe que vc criou, eu to precisando emitir relatórios de um banco e acredito que sua classe pode ser de grande ajuda.
Sds
Logan
Essa é a classe de RelatorioPadrao…
/*
*
*
TODO Esta classe tem o bjetivo de gerar qualquer relatórios simples no formato de tabelas em HTML
O desenvolvedor necessita apenas e passar os seguintes parâmetros:
titulo - é o título que será mostrado no documento e na barra de títulos;
dados - é o resultset com os informações do select feito no banco de dados;
linhas - é a quantidade de linhas de informações contidas neste resultset;
colunas - é a quantidade de colunas existentes no relatório;
cabecalhoColuna - é uma matriz que representa todos os cabeçalhos de couna existentes no relatório.
*/
package academico;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.Format;
import javax.swing.text.DateFormatter;
public class RelPadraoHTML {
public void montarRelatorio(String titulo, ResultSet dados, int linhas, int colunas, String [] cabecalhoColuna){
File arquivo = new File(“C:\relatorio.html”);
if (arquivo != null) {
try{
BufferedWriter saida = new BufferedWriter(new FileWriter(arquivo));
StringBuffer buffer = new StringBuffer();
String linha;
linha = “” + titulo + “”;
linha += "
" + titulo + “
”;
linha += “”;
for(int cont = 0; cont < colunas; cont++){
linha += "<td bgcolor='#000033'> <strong> <font color='#FFFFFF'>" + cabecalhoColuna[cont] + "</font> </strong> </td>";
}
linha += "</strong></tr>";
buffer.append(linha);
linha = "";
// MONTANDO AS LINHAS DE DADOS DO RELATÓRIO
try{
while (dados.next() == true){
for(int cont = 1; cont <= colunas; cont++){
linha += "<td bgcolor='#CCCCCC'> <font color='##000000'>" + dados.getString(cont) + "</font></td>";
}
linha += "</tr>";
buffer.append(linha);
linha = "";
}
} catch (Exception e){
// TRATA O ERRO DE FIM DE RESULTSET
}
java.util.Date d = new java.util.Date();
// INSERE DADOS DO HTML NA ÁREA TEMPORÁRIA DE BUFFER
DateFormatter formatar = new DateFormatter();
//formatar.setFormat();
//linha = "</table> <font style='italic' size='2'>Data de emissão:" + d.getDate() + "/" + d.getMonth() + "/" + d.getYear() + "</font>";
linha = "</table> <font style='italic' size='2'>Data de emissão:" + d.toLocaleString() + "</font>";
buffer.append(linha);
linha = "";
// ESCREVE A ÁREA TEMPORÁRIA DE BUFFER NO ARQUIVO HTML QUE SERÁ O RELATÓRIO
saida.write(buffer.toString());
saida.close();
// ABRE O RELATÓRIO RECÉM CRIADO
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + arquivo.getAbsolutePath());
} catch (IOException erro) {
}
}
}
}
Essa é a controladora onde vc monta seu relatorio
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
public class CrtRelatorio
{
public static void montar() throws SQLException
{
RelPadraoHTML rel = new RelPadraoHTML();
CadRelatorio cd=new CadRelatorio();
ResultSet dados = cd.relatorioContas();
String [] cabecalho = {"Código", "Nome"};
rel.montarRelatorio("Alunos Cadastrados", dados, dados.getRow(), 9, cabecalho );
}
}
E agora vou colocar uma tela onde eu usei para gerar o relatorio com exeplo para ve se te ajuda… nessa tela eu entro com a data inicial e data final e o relatorio é gerado…
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
public class TelaRelatorio extends JFrame {
private JPanel jContentPane = null;
private JLabel lblTitulo = null;
private JLabel lblDtInicial = null;
private JTextField txtDtInicial = null;
private JLabel lblDtFinal = null;
private JTextField txtDtFinal = null;
private JButton bttGerar = null;
CadRelatorio c=new CadRelatorio();
/**
* This is the default constructor
*/
public TelaRelatorio() {
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(254, 227);
this.setContentPane(getJContentPane());
this.setTitle("Relatório");
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
lblDtFinal = new JLabel();
lblDtFinal.setBounds(new java.awt.Rectangle(17,89,80,18));
lblDtFinal.setText("Data Final:");
lblDtInicial = new JLabel();
lblDtInicial.setBounds(new java.awt.Rectangle(17,60,77,21));
lblDtInicial.setText("Data Inicial:");
lblTitulo = new JLabel();
lblTitulo.setBounds(new java.awt.Rectangle(95,11,59,30));
lblTitulo.setText("Relatório");
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(lblTitulo, null);
jContentPane.add(lblDtInicial, null);
jContentPane.add(getTxtDtInicial(), null);
jContentPane.add(lblDtFinal, null);
jContentPane.add(getTxtDtFinal(), null);
jContentPane.add(getBttGerar(), null);
}
return jContentPane;
}
/**
* This method initializes txtDtInicial
*
* @return javax.swing.JTextField
*/
private JTextField getTxtDtInicial() {
if (txtDtInicial == null) {
txtDtInicial = new JTextField();
txtDtInicial.setBounds(new java.awt.Rectangle(105,90,133,19));
}
return txtDtInicial;
}
/**
* This method initializes txtDtFinal
*
* @return javax.swing.JTextField
*/
private JTextField getTxtDtFinal() {
if (txtDtFinal == null) {
txtDtFinal = new JTextField();
txtDtFinal.setBounds(new java.awt.Rectangle(104,59,133,19));
}
return txtDtFinal;
}
/**
* This method initializes bttGerar
*
* @return javax.swing.JButton
*/
private JButton getBttGerar() {
if (bttGerar == null) {
bttGerar = new JButton();
bttGerar.setBounds(new java.awt.Rectangle(44,120,179,27));
bttGerar.setText("Gerar Relatório");
bttGerar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
c.setDtInicial(txtDtInicial.getText());
c.setDtFinal(txtDtFinal.getText());
try
{
CrtRelatorio cr=new CrtRelatorio();
cr.montar();
}
catch(Exception e)
{
}
}
});
}
return bttGerar;
}
public static void main(String arg[])
{
TelaRelatorio tr=new TelaRelatorio();
tr.show();
}
} // @jve :decl-index=0:visual-constraint=“10,10”
cara acho que é só isso… tem tempo que eu fiz não me lembro muito bme se está faltando algo … qualquer coisa posta ae pra gente discutir as dúvidas.
Hamses
Novembro 25, 2006, 5:50pm
#6
Boa Tarde.
Já que vocês estão falando de relatorios,alguem sabe como eu faço para imprimir em uma impressora matricial.(Epson Lx 300 +)
Obrigado.