Step :1 )Create .jrxml file.
For creating PDF or EXCEL file , you need iReport that generates .jrxml file .
I had create two parameter name as "name" and "address" by clicking on Parameters in Report Inspector
window (in left handside).
After creating parameter just drag and drop where you want to put in report. You can also create static Text("Name::" and "Address::") as I show above snapshot.Step : 2 ) Create method to export in .xls file.
For below code you need to import jars in portlet's lib folder like iText-2.1.5.jar , iText-2.1.7.jar , jasperreports-3.7.5.jar , jasperreports-applet-3.7.5.jar , jasperreports-fonts-3.7.5.jar , jasperreports-javaflow-3.7.5.jar.
After creating report save it. Here i'm saving as reportDemo.jrxml under report folder of my docroot directory.
private void makeExcelReport(ActionRequest actionRequest, ActionResponse actionResponse, User user)
throws JRException, IOException
{
JasperReport report;
Map paramMap = new HashMap();
report = JasperCompileManager.compileReport(getPortletContext().getRealPath("/reports/reportDemo.jrxml"));
String nameFromRequest = user.getUserName();
String addressFromRequest = userUserAddress();
paramMap.put("name", nameFromRequest);
paramMap.put("address", addressFromRequest );
java.util.List list = new ArrayList();
list.add(paramMap);
String userFormFile = actionRequest.getPortletSession().getPortletContext().getRealPath("") + "/" +
"UserForm_" + ".xls";
// This is where we store .xls file, It is in temp folder where deployment is done.
File fileName = new File(userFormFile);
if (fileName.exists())
{
fileName.delete();
}
JRBeanCollectionDataSource dataSourceWebContent = new JRBeanCollectionDataSource(list);
JasperPrint print = JasperFillManager.fillReport(report, paramMap, dataSourceWebContent);
ByteArrayOutputStream outputByteArray = new ByteArrayOutputStream();
OutputStream outputfile = new FileOutputStream(new File(userFormFile));
JRXlsExporter exporter = new JRXlsExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, print); // Optional
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, userFormFile); // Optional
exporter.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, outputByteArray); // Optional
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE); //
exporter.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE);
// Optional
exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE); // Optional
exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE); // Optional
exporter.exportReport();
outputfile.write(outputByteArray.toByteArray());