Como chamar relatório IReport pelo Java com base de dados a partir de uma planilha?

Criei um relatório no IReport com o tipo de conexão Microsoft Excel(xls) datasource, apontei o caminho da planilha e pelo IReport gero o relatório normalmente e ele é exibido em PDF.

Procurei aqui no grupo e não consegui encontrar algum exemplo para tirar minha duvida que é como realizar a chamada pelo Java conforme a imagem abaixo qual chamada posso usar e se possível se tem algum exemplo.

image

tentei com chamar o relatorio com o código abaixo mas é gerado o seguinte erro

**ERRO AO GERAR RELATORIO **
Unknown column name : codigo

A coluna codigo esta na planilha e na ferramenta iReport gera normalmente, somente quando chamo pela aplicação acontece isso.

try {

        File arquivo = new File(Constantes.CAMINHO_ARQUIVO + Constantes.PLANILHA_RECIBO);
        HashMap param = new HashMap();

        JasperPrint relatorio = null;
        System.out.println("Entra para gerar os relatorios");
        String dir = System.getProperty("user.dir");;
          relatorio = JasperFillManager.fillReport(dir + "/src/relatorios/teste_recibo.jasper", param, new JRXlsDataSource(arquivo));
        JasperViewer.viewReport(relatorio, false);
    } catch (Exception ex) {
        JOptionPane.showMessageDialog(this, "ERRO AO GERAR RELATORIO \n" + ex.getMessage(), "ERRO!", JOptionPane.ERROR_MESSAGE);
        System.out.println("ERRO AO GERAR RELATORIO \n" + ex.getMessage());
    }
}

alguem teria alguma sugestão para contornar este problema? Tentei enviando uma coleção de dados mas da erro de UTF-8 ao compilar o ireport

Cê tem certeza que a coluna ta lá? Pelo excel eu não manjo nada mano. Vê se vc usou algum acento em “coluna”, se tá falando que é desconhecida, não tem muito o que fazer.

Troca isso: System.out.println("ERRO AO GERAR RELATORIO \n" + ex.getMessage());
Por isso: ex.printStackTrace();

A coluna esta sim, porem consegui resolver o problema mudando a conexão do relatório, primeiro estou lendo a planilha pela aplicação e carrego uma lista e mando para o iReport ae deu certo.
Obrigado pela força

1 curtida