2010-10-18 6 views
4

Je veux faire l'objet liste comme source de données, pouvez-vous me dire pour le fichier .jrxml comment dois-je concevoir mon rapport?Java jasper rapports liste comme source de données

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"); 
    } 
} 

Répondre

7

Faire usage de la JasperDatasource pour les collections: net.sf.jasperreports.engine.data.JRBeanCollectionDataSource

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

Votre rapport répétera une fois pour chaque élément. Ou vous pouvez définir un sous-rapport en fonction du rapport principal, qui doit être répété une fois par élément de liste.

+3

Je me rends compte que c'est un vieux fil, mais il a un rang élevé Google: Dans un rapport, vous pouvez utiliser une expression pour un sous-rapport/table: net.sf.jasperreports.engine.data.JRBeanCollectionDataSource (F_COLLECTION $) ; Espérons que cela épargnera à quelqu'un un peu de frustration avec des rapports imbriqués. –

+0

Bon point Daniel. Merci. –

+2

Aussi, pour ceux qui veulent voir quelques bons exemples, j'ai trouvé cela utile: http://jasperreports.sourceforge.net/sample.reference/datasource/index.html –

Questions connexes