

private void generateReport(PortletRequest resourceRequest , PortletResponse response, Map
String fileType = ParamUtil.getString(resourceRequest, "fileType");
if(fileType != null && fileType != ""){
HttpServletResponse httpServletResponse = PortalUtil.getHttpServletResponse(response);
OutputStream outputStream = httpServletResponse.getOutputStream();
List
try { invoicesList = InvoiceLocalServiceUtil.getInvoices(-1, -1);
} catch (SystemException e) { System.out.println("no list found");
} String path = getPortletContext().getRealPath("/reports/test_jasper.jrxml");
InputStream inputStream = new FileInputStream (path);
JRBeanCollectionDataSource beanColDataSource = new JRBeanCollectionDataSource(invoicesList);
byte[] contentArray = null;
try { JasperDesign jasperDesign = JRXmlLoader.load(inputStream);
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, beanColDataSource);
if(fileType.equalsIgnoreCase("PDF")){
System.out.println("PDF calling");
contentArray = JasperExportManager.exportReportToPdf(jasperPrint);
httpServletResponse.setContentType("application/pdf");
httpServletResponse.setHeader("Content-Disposition","attachment;filename=test."+fileType);
outputStream.write(contentArray);
}else{
httpServletResponse.setContentType("text/csv");
JRCsvExporter exporter = new JRCsvExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRCsvExporterParameter.FIELD_DELIMITER,";");
exporter.setParameter(JRCsvExporterParameter.RECORD_DELIMITER,"\r\n");
httpServletResponse.setHeader("Content-Disposition", "attachment;filename=testcsv.csv");
StringBuffer buffer = new StringBuffer();
exporter.setParameter(JRExporterParameter.OUTPUT_STRING_BUFFER, buffer);
exporter.exportReport();
outputStream.write(buffer.toString().getBytes());
httpServletResponse.flushBuffer();
} } catch (JRException e) {
e.printStackTrace();
System.out.println("data not found");
} outputStream.close();
}
}
Required jars for the above code is :

If we look on code in controller is : ExportReports.java
@Override
public void serveResource(ResourceRequest resourceRequest,
ResourceResponse response) throws IOException,
PortletException {
String[] invoiceInfo = ParamUtil.getParameterValues(resourceRequest, "invoiceInfo");
generateReport(resourceRequest,response,putParameters(invoiceInfo));
}
private Map
Map
for(String selectedData : invoiceInfo){
selectedData = "show"+selectedData;
parameters.put(selectedData, Boolean.TRUE);
}
return parameters;
}

