反饋已提交

網絡繁忙

遠端Excel資料集

1. 概述

某些時候我們希望可以呼叫別的伺服器中的 Excel 資料集。

透過 JSP 頁面中呼叫 Excel 檔案,透過 URL 方式存取此 JSP 頁面來將別的伺服器中的 Excel 檔案作為資料集。

2. 定義遠端 Excel 檔案資料集

2.1 準備 Excel 檔案

建立 test.xlsx 檔案,如下圖:

2.2 建立 jsp 檔案

注: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 等伺服器才支援。

2.3 建立檔案資料集

在設計器中建立一個檔案資料集,檔案類型-Excel,URL 填寫 download.jsp 的存取路徑,例如: http://www.finereporthelp.com:8181/apptest/download.jsp

根據實際情況選擇是否第一行包含列標題,預覽,就可以看到此 Excel 檔案的內容了,如下圖:

2.4 效果查看

設定完後,可以看到範本資料集中會增加一個名為 'File1' 的資料集,如下圖:


至此,遠端 Excel 資料集建立完成了,就可以像其他資料集一樣使用了。

2.5 擴展

注:如果需要用此 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後關閉