ireport4.0.2父子報表詳解

開發步驟:
java

一、新建一個父報表parent_reportweb

在ireport designer左上角工具欄中點擊「文件」,下拉列表中選擇「New...",彈出以下對話框:
數據庫

默認選擇"Blank A4",點擊「Launch Report Wizard」,進入下圖:框架

爲報表文件命名,並選擇須要保存的路徑。點擊「下一步"。工具

接下來選擇Connections/Data Sources,若是沒有數據源則選擇」Empty datasource「。下一步。spa

下一步。插件

繼續下一步。開發

到這一步父報表文件便新建好了。get

二、引入subreportit

首先新建sub1_report,建立步驟參考上面。效果以下圖:

在「組件面板」中將Subreport組件拖入父報表中的detail中,會彈出以下窗口:

選擇建立好的子報表sub1_report,一直點擊「下一步」,完成。效果以下:

三、配置數據源:

我用過兩種數據源,一種是JDBC,一種是JavaBean。下面我分別來說:

<一>JDBC數據源配置

點擊工具欄」電插頭「圖標,以下圖

彈出以下窗口:

new一個datasource,以下圖有不少種datasource,這裏咱們選擇JDBC

next,進入數據庫信息配置,填好信息以後,test一下,沒問題save,JDBC數據源配置完成。

<二>配置JavaBean數據源

我在項目中用的是ZK框架,它集成了Jasperreport 插件,代碼以下:

public void onClick$printBtn() {

String subReportPath = getClass().getResource("/").getPath().replace("WEB-INF/classes", "invs/print");

String jasperUrl = "/invs/print/inv_check_report.jasper";

Div div_report = (Div) reportWin.getFellow("div_report");

reportWin.setVisible(true);

Jasperreport jasperreport = (Jasperreport) div_report.getFellow("report");

Map<String,Object> parameters = new HashMap<String,Object>();

parameters.put("SUBREPORT_DIR", subReportPath);

parameters.put("createdTime", DateUtil.getStrLong(checkVO.getCreatedTime()));

parameters.put("creatorName", checkVO.getCreatorName());

parameters.put("deptName", checkVO.getDeptName());

JRBeanCollectionDataSource usedDetailDs = new JRBeanCollectionDataSource(checkVO.getUsedDetailList());  //設置List數據源

JRBeanCollectionDataSource usedSummaryDs = new JRBeanCollectionDataSource(checkVO.getUsedSummaryList());

JRBeanCollectionDataSource stockDetailDs = new JRBeanCollectionDataSource(checkVO.getStockDetailList());

JRBeanCollectionDataSource stockSummaryDs = new JRBeanCollectionDataSource(checkVO.getStockSummaryList());

parameters.put("usedDetailDs", usedDetailDs);//這裏"usedDetailDs"和report中的parameter要對應

parameters.put("usedSummaryDs", usedSummaryDs);

parameters.put("stockDetailDs", stockDetailDs);

parameters.put("stockSummaryDs", stockSummaryDs);

jasperreport.setSrc(jasperUrl);

jasperreport.setParameters(parameters);

jasperreport.setType("pdf");

}

這裏javabean向Jasperreport中傳遞參數時,List類型的數據須要用JRBeanCollectionDataSource來進行封裝,同時在parameter屬性Class設置爲net.sf.jasperreports.engine.data.JRBeanCollectionDataSource,以下圖

同時,在這是subreport屬性時,Connection type選擇Use a datasource,Data Source Expression選擇對應從後臺傳過來的parameter。

四、常見問題

<一>pdf中文不顯示

須要設置顯示中文標籤的屬性:

pdf Font name is now deprecated:STSong-Light
pdf Encoding : UniGB-UCS2-H(China Simplified)

如圖

項目工程中須要引入這兩個包:iText和iTextAsian,注意,這兩個包要配套起來,報名應該以com.lowagie開頭,不要弄錯了哦。


這篇文章是對以前項目中用到的ireport技術的一個小總結,若是你們有什麼問題能夠留言或者加我QQ(1041211664).

相關文章
相關標籤/搜索