Ola gostaria de saber como faço para executar um relatorio criado com ireport na minha aplicação???
abraço
Ola gostaria de saber como faço para executar um relatorio criado com ireport na minha aplicação???
abraço
E aí, beleza?
Eu costumo fazer assim:
JRBeanCollectionDataSource dataSourceCarteira = new JRBeanCollectionDataSource(list); // recebe um List com os meus objetos
try{
JasperPrint report = JasperFillManager.fillReport("./report.jasper", null, dataSource); // passo o caminho do arquivo .jasper, um Map de parâmetros (nulo, neste caso) e o data source criado anteriormente
JasperPrintManager.printReport(report, true);// imprime o relatório
}
catch (JRException exception){}
E para sair em PDF?
Taí um servlet de exemplo, isso que o GUJ já tem exemplos citados em outros tópicos:
// nome do relatorio
String reportName = request.getParameter("reportName");
if (reportName == null || reportName.equals("")) {
throw new Exception("Nome do relatório deve ser informado.");
}
// copia parametros da requisição
Enumeration en = request.getParameterNames();
Map parameters = new HashMap();
while(en.hasMoreElements()){
String key = (String) en.nextElement();
parameters.put(key, request.getParameter(key));
}
parameters.put("REPORT_LOCALE", new Locale("pt", "br"));
// conexão do datasource
PoolConnection pool = new PoolConnection();
conn = pool.getJdbcURL().getConnection();
// carrega relatório
JasperReport relatorio = ReportUtils.getReport(reportName);
JasperPrint jasperPrint = JasperFillManager.fillReport(relatorio, parameters, conn);
ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
// exporta para pdf
JasperExportManager.exportReportToPdfStream(jasperPrint, arrayOutputStream);
// define os cabecalhos do header
response.setHeader("Pragma","");
response.setHeader("Cache-Control","");
response.setHeader("Expires","");
response.setContentType("application/pdf");
response.setContentLength(arrayOutputStream.size());
// escreve o relatorio no response
OutputStream out = response.getOutputStream();
arrayOutputStream.writeTo(out);
out.flush();
out.close();