5

I want to make list object as my data source, can you tell me for .jrxml file how should i design my report ?

public class TestReport 
{
 public void runReport(String fileName, String outFileName) 
 {
  try 
  {
   List<R> list = new ArrayList<R>(5);

   Map parameters = new HashMap();
   list.add(new R("a1" ,"a2"));
   list.add(new R("b1" ,"b2"));
   list.add(new R("c1" ,"c2"));
     /*parameters.put("my_name", "faisal khan");
     parameters.put("my_addr", "address comes here");*/
            JasperPrint print = JasperFillManager.fillReport( fileName, parameters, new JREmptyDataSource());
            JRExporter exporter = new JRPdfExporter();
            exporter.setParameter(
            JRExporterParameter.OUTPUT_FILE_NAME,outFileName);
            exporter.setParameter(
            JRExporterParameter.JASPER_PRINT, print);
            JasperExportManager.exportReportToPdfFile(print, outFileName);
            print = null;
            exporter = null;
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

 private class R{
  private String name;
  private String addr;

  public R(String name, String addr) {
   super();
   this.name = name;
   this.addr = addr;
  }
  public String getName() {
   return name;
  }
  public void setName(String name) {
   this.name = name;
  }
  public String getAddr() {
   return addr;
  }
  public void setAddr(String addr) {
   this.addr = addr;
  }

 }
  public static void main(String args[]){
   new TestReport().runReport("/home/faisalloe/ireports/report1.jasper", "/home/faisalloe/ireports/report1.pdf");
  }
}

1 Answer 1

9

Make use of the JasperDatasource for collections: net.sf.jasperreports.engine.data.JRBeanCollectionDataSource

JasperPrint print = JasperFillManager.fillReport( fileName, parameters, new JRBeanCollectionDataSource(list));

Your report will repeat once for each element. Or you can define a subreport depending the main report, wich is to be repeated once per list element.

Sign up to request clarification or add additional context in comments.

2 Comments

I realize this is an old thread, but it has a high Google rank: Inside a report you can use an expression for a subreport/table: net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F_COLLECTION); Hopefully that saves someone a little frustration messing with nested reports.
Also, for those who want to see some good samples, I found this useful: jasperreports.sourceforge.net/sample.reference/datasource/…

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.