2014-02-20 30 views
0

我有這樣的代碼:的JasperReports:打印的ArrayList到TextField的模板

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 

import net.sf.jasperreports.engine.JasperExportManager; 
import net.sf.jasperreports.engine.JasperFillManager; 
import net.sf.jasperreports.engine.JasperPrint; 
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; 

public class TestReport { 
    public void runReport() { 
     try { 
      List<Text> list = new ArrayList<Text>(3); 
      list.add(new Text("a1")); 
      list.add(new Text("b1")); 
      list.add(new Text("c1")); 

      Map parameters = new HashMap(); 
      parameters.put("text", list);   

      JasperPrint print = JasperFillManager.fillReport("report1.jasper", parameters, new JRBeanCollectionDataSource(list)); 

      JasperExportManager.exportReportToPdfFile(print, "report1.pdf"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    private class Text {   
     private String txt;  
     public Text() {}     
     public Text(String txt) {this.txt = txt;} 
     public void setTxt(String txt) {this.txt = txt;}   
     public String getTxt() {return txt;} 
    } 

    public static void main(String args[]) { 
     new TestReport().runReport(); 
    } 
} 

我需要生成PDF具有「文本字段」中的「詳細信息」一節。

enter image description here

我嘗試使用 「的JavaBean設置數據源」,但它與崩潰:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 
    at net.sf.jasperreports.engine.util.JRLoader.<clinit>(JRLoader.java:68) 
    at net.sf.jasperreports.engine.JRPropertiesUtil.loadProperties(JRPropertiesUtil.java:99) 
    at net.sf.jasperreports.engine.DefaultJasperReportsContext.initProperties(DefaultJasperReportsContext.java:94) 
    at net.sf.jasperreports.engine.DefaultJasperReportsContext.<init>(DefaultJasperReportsContext.java:71) 
    at net.sf.jasperreports.engine.DefaultJasperReportsContext.<clinit>(DefaultJasperReportsContext.java:59) 
    at net.sf.jasperreports.engine.JasperFillManager.getDefaultInstance(JasperFillManager.java:85) 
    at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:915) 
    at TestReport.runReport(TestReport.java:26) 
    at TestReport.main(TestReport.java:49) 

我有不好的模板。你能幫我嗎(或者發送給我示例模板)如何創建像圖像一樣的工作模板?第一個文本字段應該包含「a1」,第二個「b1」,...

回答

0

錯誤說'LogFactory'類無法找到,這意味着您缺少JasperReports使用的commons-logging.jar。 至於模板,您可以在Detail中使用List(component)或Table,並將其數據源設置爲您要發送的列表($ P(「text」)或$ P {REPORT_DATA_SOURCE})。 此外,不需要將該列表作爲參數或數據源發送。您可以將它作爲參數發送(在某些更復雜的情況下(包含多個列表和表),將數據源設置爲JREmptyDataSource,或將其作爲數據源發送並從參數中刪除,這在你的情況下就足夠了。