2010-10-18 56 views
4

我要讓列表對象作爲我的數據源,你可以告訴我.jrxml文件,我應該如何設計我的報告?Java的碧玉報告列表作爲數據源

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

回答

7

利用JasperDatasource爲集合:net.sf.jasperreports.engine.data.JRBeanCollectionDataSource

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

您的報告會重複一次的每個元素。或者你可以根據主報告定義一個子報表,每個列表元素重複一次。

+3

我意識到這是一個古老的線程,但它具有較高的谷歌排名: 內部報告,你可以使用表達式的報表/表: net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($ F_COLLECTION) ; 希望這可以節省一些人搞砸嵌套報告的挫折感。 – 2011-08-25 15:47:36

+0

丹尼爾好點。謝謝。 – 2011-08-26 06:46:06

+2

此外,對於那些想要看到一些好樣本的人,我發現這很有用:http://jasperreports.sourceforge.net/sample.reference/datasource/index.html – 2012-08-22 16:35:04