Boa tarde galera, seguinte eu preciso criar um relatório e quero faze-lo com ireport, ele será gerado em pdf e Excel, por isso a escolha do ireport, o problema é que tenho que gerar várias planilhas dentro deste relatório, há alguma forma de gerar N planilhas com o ireport??
Obrigado
Boa tarde,
Basicamente voce vai gerar uma lista de JasperPrint e no JRXlsExporter voce vai passar os parametros abaixo:
final JRXlsExporter ex = new JRXlsExporter();
ex.setParameter(JRXlsExporterParameter.JASPER_PRINT_LIST, Lista_de_JapserPrint);
ex.setParameter(JRXlsAbstractExporterParameter.SHEET_NAMES, Array_Nome_abas);
1 curtida
Muito obrigado pela ajuda!
Bom dia salina_foz, preciso fazer algo semelhante porem estou com algumas duvidas e não encontro quase nada a respeito, estou criar um relatorio em excel usando ireport e preciso de duas abas nesta planilha, como fica o arquivo do ireport? este e o metodo que passa as informações para o ireport:
public void executarRelatorioDemandasProcessos8(ActionEvent action) throws Exception {
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
try {
ServletOutputStream servletOutputStream = response.getOutputStream();
Map<String, Object> parametros = new HashMap<String, Object>();
List dados = new ArrayList();
List dados2 = new ArrayList();
List lista = null;
Map record = null;
Map record2 = null;
//Lista com os id's das demandas
List<Long> listaIds = new ArrayList<Long>();
parametros.put("TITULO", "BTCALL CENTER - RELATÓRIO DEMANDAS CONTEUDISTAS");
Iterator<?> iterator = getRelatorioPesqDemandasProcessos8().iterator();
while (iterator.hasNext()) {
CelulasDemanda d = (CelulasDemanda) iterator.next();
record = new HashMap();
listaIds.add(d.getDemanda().getId());
record.put("id", d.getDemanda().getId());
///Mais itens...
//adiciona o List dados
dados.add(record);
}
Iterator<?> iterator2 = getCDatasDemandasPorDemanda(listaIds).iterator();
while (iterator2.hasNext()) {
CdatasDemandas c = (CdatasDemandas) iterator2.next();
record2 = new HashMap();
record2.put("demanda", c.getDemanda());
///Mais itens...
dados2.add(record2);
}
//Instancia o arquivo de swap, informando:
// Diretorio,
// Tamanho de cada bloco (4kb)
// Numero mínimo de blocos que o swap será aumentado sempre que estiver cheio
//JRSwapFile arquivoSwap = new JRSwapFile("/usr/share/apache-tomcat-7.0.53/webapps/genteemacao/tmp/", 4096, 100);
// Instancia o virtualizador
//JRAbstractLRUVirtualizer virtualizer = new JRSwapFileVirtualizer(100, arquivoSwap, true);
//parametros.put(JRParameter.REPORT_VIRTUALIZER, virtualizer);
//cria uma fonte de dados para cole??es
JRBeanCollectionDataSource fonteDados = new JRBeanCollectionDataSource(dados);
JRBeanCollectionDataSource fonteDados2 = new JRBeanCollectionDataSource(dados2);
imprimirExcel(fonteDados, "RelatorioConteudistas_UltimateVersion", parametros);
imprimirExcel(fonteDados2, "RelatorioCdatasDemandas", parametros);
servletOutputStream.flush();
servletOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
throw new Exception("Um erro ocorreu quando o relatório estava sendo executado.");
} finally {
context.responseComplete();
}
}
Uma de minhas duvidas eh: no metodo imprimir excel, eu passo um jrxml diferente, ou e um mesmo xml que eu configuro as duas abas?