Gerar relatorio - Ireport - Aplicação Swing

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

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

Gerar uma planilha atraves de dados do MySql

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

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?

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.

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?