反饋已提交
網絡繁忙
某些時候我們希望可以呼叫別的伺服器中的 Excel 資料集。
透過 JSP 頁面中呼叫 Excel 檔案,透過 URL 方式存取此 JSP 頁面來將別的伺服器中的 Excel 檔案作為資料集。
建立 test.xlsx 檔案,如下圖:
注:jsp 檔案的檔案名稱請使用英文,否則會連結失敗。
注:jsp 檔案修改後請刪除所有中文註釋
建立「download.jsp」,程式碼如下:
<%@ page contentType="application/vnd.ms-excel" language="java" import="java.io.*" pageEncoding="UTF-8"%><% response.reset(); <%可以加也可以不加%> response.setContentType("application/x-download"); <%可以帶一個id參數,需要下載的檔案id,可以以id作為檔案名稱存放,比如下面的test.xlsx;%>String fileid=request.getParameter("id");<%如果沒傳id參數,設定fileid為空字串,讀test.xlsx,%>if(fileid==null) fileid="";<%實際存放的檔案路徑與檔案名稱,可以用相對路徑,也可以用伺服器磁碟上絕對路徑,如"c:/test.xlsx";%> String path = request.getRealPath("/")+"test"+fileid+".xlsx"; <%String path = "c:/a.xlsx"; %> <%下載檔案名稱,這個無所謂 %> String downloadname = "abc"; response.addHeader("Content-Disposition","attachment;filename=" + downloadname); <%定義輸入匯出流,讀取檔案%> java.io.OutputStream outStream = null; java.io.FileInputStream in = null; try { outStream = response.getOutputStream(); in = new FileInputStream(path); byte[] b = new byte[1024]; int i = 0; while((i = in.read(b)) > 0) { outStream.write(b, 0, i); } <%強制匯出緩衝區%>outStream.flush(); <%更新out物件%>out.clear(); out = pageContext.pushBody(); } catch(Exception e) { System.out.println("Error!"); e.printStackTrace(); } finally <%釋放檔案%> { if(in != null) { in.close(); in = null; } } %>
將此 Excel 檔案和 JSP 頁面放在 Tomcat 下的項目資料夾中,比如 apptest 中,如下圖:
注:JSP 檔案需要 Tomcat 或者 WebLogic 等伺服器才支援。
在設計器中建立一個檔案資料集,檔案類型-Excel,URL 填寫 download.jsp 的存取路徑,例如: http://www.finereporthelp.com:8181/apptest/download.jsp
根據實際情況選擇是否第一行包含列標題,預覽,就可以看到此 Excel 檔案的內容了,如下圖:
設定完後,可以看到範本資料集中會增加一個名為 'File1' 的資料集,如下圖:
至此,遠端 Excel 資料集建立完成了,就可以像其他資料集一樣使用了。
注:如果需要用此 download.jsp 處理多個 Excel 檔案,download.jsp 提供了一個id參數,在 JSP 中處理不同 ID 對應的 Excel 檔案即可
http://www.finereporthelp.com:8181/apptest/download.jsp?id=1 可以獲取名為 test1.xlsx 檔案的資料集(前提是此 Excel 檔案存在,否則傳回失敗)。
http://www.finereporthelp.com:8181/apptest/download.jsp?id=2 可以獲取名為 test2.xlsx 檔案的資料集,依次類推。
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙