代码之家  ›  专栏  ›  技术社区  ›  d-man

Java jasper报表列表作为数据源

  •  4
  • d-man  · 技术社区  · 14 年前

    我想把list对象作为我的数据源,你能告诉我 .jrxml 我应该如何设计我的报告?

    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 回复  |  直到 12 年前
        1
  •  8
  •   Tomas Narros    14 年前

    对集合使用JasperDatasource: net.sf.jasperreports.engine.data.JRBeanCollectionDataSource

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

    您的报告将对每个元素重复一次。或者可以根据主报表定义子报表,其中每个列表元素都要重复一次。