Gerar relatorio - Ireport - Aplicação Swing

6 respostas
jorge.david

Pessoal, estou há tempos procurando uma solução para criar um relatorio que gere uma planilha excel com dados de um banco mysql.
Minha aplicação Swing tem um botão exportar dados e gostaria muito de saber como devo proceder.
Alguem tem algum exemplo?
Abraços

6 Respostas

davidbuzatto

Afinal, qual o seu problema? Gerar um relatório ou uma planilha?

jorge.david

Gerar uma planilha atraves de dados do MySql

davidbuzatto

Então você deve usar a Apache POI ao invés do JasperReports.
Com o Jasper você conseguirá gerar um relatório e salvar como planilha, mas nunca fica muito bom.
O ideal é usar a POI diretamente e montar sua planilha.

Segue o link: http://poi.apache.org/

A biblioteca é bem vasta e completa, além da documentação ser bem razoável.

[]'s

jorge.david

OK.
Comecei a montar a planilha com o POI, mas me deparei com uma duvida.
Quando trago os dados do banco não sei como adicionar uma linha para cada dado. A unica coisa que consigo é add colunas.
Veja o codigo abaixo:

String produto = null;
        int meta_turno = 0;
        int total_turno = 0;
        InspecaoDB db = new InspecaoDB();
        ArrayList lista = new ArrayList();
        lista = db.rel_volume(1, 1);
        
        HSSFWorkbook wb = new HSSFWorkbook();
        HSSFSheet sheet1 = wb.createSheet("Relatorio Geral");
        HSSFRow row = sheet1.createRow(0);
        HSSFRow row2 = sheet1.createRow(0);
        row.createCell(0).setCellValue("Produto");
        row.createCell(1).setCellValue("Meta");
        row.createCell(2).setCellValue("Total");
        for (int i = 0; i < lista.size(); i++) {
            ApontamentoVo fila = (ApontamentoVo) lista.get(i);
            produto = fila.getProduto();
            meta_turno = fila.getMeta_turno();
            total_turno = fila.getTotal_turno();
            
            //row.createCell((short) i).setCellValue(produto);
            
        }
        
        
        FileOutputStream stream = new FileOutputStream("c:/planilha.xls");
        wb.write(stream);

Como add linha no POI?

davidbuzatto

O que está acontecendo nas linhas 10 e 11?
Traduza “row” e você entenderá.

Basta agora buscar os dados, percorrer o result set e para cada linha do resultado
inserir uma nova linha na planilha e popular com os dados.

jorge.david

O problema é que não sei como percorrer dentro do meu laço…

String produto = null;
        int meta_turno = 0;
        int total_turno = 0;
        InspecaoDB db = new InspecaoDB();
        ArrayList lista = new ArrayList();
        lista = db.rel_volume(1, 1);
        
        HSSFWorkbook wb = new HSSFWorkbook();
        HSSFSheet sheet1 = wb.createSheet("Relatorio Geral");
        HSSFRow row1 = sheet1.createRow(0);        
        row1.createCell(0).setCellValue("Produto");
        row1.createCell(1).setCellValue("Meta");
        row1.createCell(2).setCellValue("Total");
        for (int i = 0; i < lista.size(); i++) {
            ApontamentoVo fila = (ApontamentoVo) lista.get(i);
            produto = fila.getProduto();
            meta_turno = fila.getMeta_turno();
            total_turno = fila.getTotal_turno();
            
        }
        
        
        FileOutputStream stream = new FileOutputStream("c:/planilha.xls");
        wb.write(stream);        
        
    }

Como posso fazer para criar as novas rows dentro do laço?

Criado 8 de janeiro de 2013
Ultima resposta 9 de jan. de 2013
Respostas 6
Participantes 2