2013-05-21 47 views
3

我使用的是JasperReportBuilder並將報告導出爲PDF。報告的全部內容由MultiPageListBuilder,Horizo​​ntalListBuilderVerticalListBuilder生成,我不想傳遞數據源,因爲數據來自各種數據源。我想利用頁面頁腳以及頁面頁眉來添加到每個頁面上的靜態頁面頁眉和頁腳以及頁碼。如果我嘗試使用addDetail(componentBuilder)方法添加 MultiPageListBuilder在*詳細&帶(因爲這MultiPageListBuilder包含多個頁面數據),空白報表生成。如果我添加MultiPageListBuilder標題摘要帶,報表生成完美,但頁眉頁腳帶消失。創建一個沒有數據源的動態報告,並將數據細節帶在頁腳和頁頭中

甲示例代碼段如下所示

JasperReportBuilder rpt = net.sf.dynamicreports.report.builder.DynamicReports.report(); 
MultiPageListBuilder multiPageList = cmp.multiPageList(); 
HorizontalListBuilder hrbld = cmp.horizontalList(); 

try {  
    rpt.addTitle(cmp.text("REPORT TITLE")); 
    rpt.addTitle(cmp.text("--------------")); 

    rpt.addPageHeader(cmp.pageXofY()); 

    for (int i = 0; i < 200; i++) { 
     hrbld = cmp.horizontalList(); 
     hrbld.add(cmp.text("ABC " + i)).newRow(); 
     multiPageList.add(hrbld); 
    } 

    rpt.addDetail(multiPageList); 

    rpt.summaryOnANewPage(); 
    rpt.addSummary(cmp.text("REPORT SUMMARY")); 

    JasperPdfExporterBuilder pdfExporter = Exporters.pdfExporter("report.pdf"); 
    rpt.toPdf(pdfExporter); 
    File file = new File("report.pdf"); 

    response.setContentType("application/pdf"); 

    return SUCCESS; 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     return ERROR; 
    } 

但是這是不工作。它生成空白報告。如果我使用rpt.addTitle(multiPageList);而不是rpt.addDetail(multiPageList);報告生成,但頁面標題不會出現在每個頁面上。

請幫忙。提前致謝。

回答

5

我發現了一個解決方案,頁眉和頁腳可以只用於細節帶。要使用詳細波段,您需要附加一個用於報告的數據源。因此,請設置一個空的數據源來報告並獲取詳細信息頻段,以便您可以放置​​數據並使用頁眉和頁腳。一個空的數據源可以設置爲rpt.setDataSource(new JREmptyDataSource());然後報告開始與rpt.addDetail(multiPageList);。謝謝大家。

相關問題