1. 概述
1.1 應用場景
在決策報表中實現匯出單個報表塊,預期效果如下圖所示:
1.2 實現思路
給按鈕元件新增點選事件,實現點選按鈕時可以匯出單個報表塊。
注:只能匯出報表塊,且只能匯出為 Excel。
注:匯出圖表塊可參考文檔 圖表匯出API 。
2. 範例
2.1 設計報表
點選設計器左上角「檔案>建立決策報表」,修改決策報表「PC端自適應屬性」中的佈局方式為「絕對佈局」且「不自適應」。如下圖所示:
將一個按鈕元件、一個報表塊組件、一個圖表組件拖曳到 body 中。將按鈕元件的「按鈕名稱」改為「只匯出報表塊」。
自行新增資料集,並且給報表塊 report0 和圖表塊 chart0 都綁定下資料。最終效果如下圖所示:
2.2 新增點選事件
選中按鈕元件,新增一個點選事件。先新增參數 a,其值選擇公式,輸入 sessionID,然後填寫 JavaScript 程式碼,如下圖所示:
JavaScript 程式碼如下:
注1:目前僅支援匯出為 excel,「&__filename__=匯出」的意義是自訂匯出的檔案名稱。
注2:匯出時檔案名稱會自動帶有後綴「_報表塊名稱」,例如本例後綴為「_report0」。
2.3 效果預覽
儲存報表,點選「PC端預覽」,點選按鈕匯出效果如 1.1應用場景 中所示。
注:不支援行動端。
3. 範本下載
已完成範本可參見:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\表單JS實體\決策報表匯出單個報表塊.frm
點選下載範本:決策報表匯出單個報表塊.frm
4. 注意事項
4.1 報表塊可見狀態
當報表塊組件取消勾選「可見」,即預覽時報表塊為不可見狀態,本文方法不支援匯出。
可透過 JS實現隱藏決策報表組件 ,隱藏後本文方法支援匯出。
4.2 Login info not available
問題描述:
使用者配置了單點登入,在釘釘/微信中開啟報表並匯出報表塊時,報錯:Login info not available,如下圖所示:
原因分析:
當在釘釘/微信中開啟報表,使用 2.2 節中的 JS 進行報表塊匯出時,URL 需要連接釘釘/微信快取資訊中的 sessionID,才可開啟相應頁面進行匯出。
但 window.open 函式會在預設瀏覽器開啟新頁面,導致無法讀取釘釘/微信快取資訊,進而導致匯出失敗。
解決方案:
將本文 2.2 節 JS 程式碼中的window.open函式改成window.location.href函式,實現在釘釘/微信自身開啟即可,具體程式碼如下:
window.location.href = "${servletURL}?op=ec_export&sessionID=" + a + "&widgetName=report0&format=excel&extype=simple&filename=匯出"