1. 概述
1.1 問題描述
報表是以表格、圖表的形式來動态展示數據,進而用於統計分析。這樣的數據表格和圖表,用戶在開發系統的時候也可以自己編程實現,但是工作量大且維護困難。
用戶往往選用現成的報表軟件開發報表,最後将制作好的報表嵌入到自己的系統中,以節省項目開發周期。
現在用戶開發的系統基本上是基於 B/S 架構的浏覽器/服務器模式,因此需要将制作好的報表嵌入到系統的某一個頁面中,做爲頁面的一部分。
下面将通過一個簡單的示例介紹 Web 頁面集成的方法:
1.2 實現思路
通過頁面 iframe 集成方式,可以很好地把其他已經開發好的頁面或者模板直接嵌入到 FineReport 的模板中,或者把 FineReport 模板嵌入到已有的 Web 頁面中,只需要指定 iframe 的 src 屬性即可:
<iframe id="reportFrame" width="900" height="400" src="../../decision/view/report?viewlet=/doc/Primary/Parameter/Parameter.cpt"></iframe>
注:此方法 iframe 的 src 會顯示出完整的報表路徑,尤其在有參數的情況下,可以使用 post 的方式向 iframe 提交請求,這樣 src 裏有不會出現具體的參數了。
2. 示例
2.1 頁面集成
以将報表嵌入到一個 HTML 頁面中爲例:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>FineReport Demo</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<iframe id="reportFrame" width="900" height="400" src="../../decision/view/report?viewlet=/doc/Primary/Parameter/Parameter.cpt"></iframe>
</body>
</html>
注1:如果 HTML 頁面與集成的模板不在同一個服務器或同一工程下,src 需要指定絕對路徑。
注2:這裏的 HTML 不是雙擊打開,而是要在工程下打開,否則無法使用相對路徑。
2.2 效果預覽
已完成示例請參照:%FR_HOME%/webroot/page_demo/Simple.html,可以直接用設計器安裝目錄下的該 demo 進行演示。
啓動設計器,輸入http://localhost:8075/webroot/help/page_demo/Simple.html,效果如下圖所示:
3. 注意事項
若您希望自己系統頁面中的按鈕可以調用 FineReport 内置的 JS 方法( 如打印方法 ),那麽需要加載 FineReport 的 JS 文件,而 FineReport 的 JS 采用的是 jQuery V1.9.1 框架。
實際情況下,一個頁面中可能不僅僅只有報表部分,用戶可能會加載其他版本的 jQuery,爲避免 JS 沖突,我們建議将報表内容顯示在 iframe 中,而不要顯示在 div 中。
需要調用 FineReport 内部的 JS 方法時,可以通過 iframe 獲取報表再調用方法,具體可參考文檔:JS 使用說明。