Olá a todos. Gostaria de perguntar se alguem saberia como montar uma simples tabela dinamica no ireport seguido a mais simples logica: Uma tabela segundo uma matriz. Suponhamos
int [][] x = {{1,2,3},
{4,5,6},
{7,8,9}};
O que eu gostaria de fazer é com que o Jasper leia estes dados recebidos do Java e crie uma tabelinha 3 x 3 com as variaveis contidas na matriz. O numero de colunas da tabela é fixo, porém o numero de linhas é variavel. È possivel isso ?
Nao entendi como fora resolvido isto no outro topico. Eu estou passando a matriz atravez de uma classe contida numa coleção de dados (JRBeanCollection). Obrigado pela resposta. []´s
Eu entendi perfeitamente como eu montaria o Jasper. Eu faria 2 fors para ler minha matriz e iria criando campo por campo da matriz, razoavelmente simples, porém nao tenho ideia de como eu implementaria isto no meu relatório ‘main’. Segue parte do codigo que uso para gerar o Jasper:
List<DadosRelatorioAtestadoMatricula> listaRegistros = new ArrayList<DadosRelatorioAtestadoMatricula>();
listaRegistros.add(dadosR);
// passa a lista para a classe JRBeanCollectionDataSource que será a lida pelo Jasper
JRBeanCollectionDataSource relatorioDataSource = new JRBeanCollectionDataSource(listaRegistros);
// abrindo o arquivo Jasper
String arqJasper = "AtestadoMatriculaGrad.jasper";
//if(graduacao) { arqJasper = "AtestadoMatriculaGraduacao.jasper"; }
String caminho = this.getClass().getResource("").getPath().toString() + arqJasper;
JasperPrint rel = JasperFillManager.fillReport(caminho, parameters, relatorioDataSource);
ByteArrayOutputStream byteReport = new ByteArrayOutputStream();
JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, rel);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, byteReport);
exporter.exportReport();
byte[] bytes = byteReport.toByteArray();
this.getResponse().setContentType("application/pdf");
this.getResponse().setContentLength(bytes.length);
ServletOutputStream outputStream = this.getResponse().getOutputStream();
outputStream.write(bytes, 0, bytes.length);
Tenho de assumir que como um bom estagiario, nao entendo totalmente o que está sendo feito neste final, logo nao tenho ideias de como gerar um sub-jasper dentro deste jasper. Nao sei o melhor modo de fazer isto, e preciso descobrir. Se nao souberem a resposta , qualquer pequenaa luz é muito apreciada.
bom isso voce faz lá pelo próprio IReport, usando a opção subreport (subrelatorio) e apartir do relatorio principal enviaria os conteudos para os subrelatorios por parametros
é bem simples, principalmente nas versões mais novas do IReport
já que voce é estagiario, recomendo ver video-aulas de IReport que em disponiveis na internet (me ajudaram muito), dei uma procurada mas não achei os videos que eu assisti mas procurando voce acha alguns bons
Bom, ja entendi como funciona o sub-relatorio, ou pelo menos o basico dele. Acredito que isto pode me ajudar mas nao irá, sozinho, solucionar meu problema. Nao existe maneira de criar um pequeno algoritimo java que importe a matriz para o Jasper e ele desenhe a tabelinha bonitinho ? Eu posso dividir de em vez de uma matriz [X][Y] por apenas um vetor[X] , contendo todas as colunas cada posição do vetor, como sendo uma String cada linha, se isto ajudar, mas ainda nao tenho ideia de como posso fazer algo que ‘varie’, ou se repita, e progrida, comece na posição 1, se repita na posição 2 e assim por diante.
acho que tive uma ideia…
voce pode criar uma classe que receba a posição e retorne o valor
assim voce vai mandando pro jasper as posições (ou o ultimo valor e voce cria um contador) e o jasper vai mandando pra classe