2016-08-03 96 views
0

我有一個excel文件,並希望在jsp頁面中顯示相同的內容。即時通訊使用下面的代碼來顯示相同​​的如何在瀏覽器中使用jsp查看excel文件

<% 
    response.setContentType("application/vnd.ms-excel"); 
    response.setHeader("Content-disposition","attachment;filename=Data.xlsx")%> 

當我嘗試單擊JSP鏈接,Excel工作表就會自動下載。但我希望Excel表格在jsp頁面的瀏覽器上顯示。

對上述任何幫助非常感謝。

回答

0

對我來說,你應該流式傳輸文件到從servlet的響應,是這樣的:

transfert(yourFile.getInputStream(),response.getOutputStream(), true); 

public static void transfert(InputStream in , OutputStream out, boolean closeOnExit) throws Exception{ 
try{byte buf[] = new byte[1024]; 
    int n; 
    while((n=in.read(buf))!=-1){ 
     out.write(buf,0,n); 
     out.flush();} 
    } 
    catch(Exception e){ 
     e.getMessage(); 
    } 

} 
0

可以有兩種方法。

  • 如果你沒有使用第三方服務,如谷歌文檔或MS OneDrive,那麼你可以在那裏上傳您的文件,並使用這些服務產生的embedded html代碼託管Excel文件的任何問題。

  • 另一種選擇是使用一些庫如apache-poi來處理excel文件並在jsp頁面上呈現它。

+0

感謝您的答覆。我已經使用apache-poi並能夠獲取相應工作表的輸入流對象。不知道如何傳遞內容並在jsp中顯示。任何幫助,這是非常感謝。 – vr3w3c9

+0

你使用任何框架?通常情況下,您如何從控制器傳遞數據來查看? – niyasc

+0

我沒有使用任何框架,對於其他頁面,當請求被調用時,請求被髮送到服務器進行處理,應用程序處理請求並以字符串的形式返回響應,並使用jsp響應對象把字符串寫回jsp。 – vr3w3c9

0

我用下面的代碼顯示在jsp頁面

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Excel Web View</title> 

<%@ page import="java.io.FileInputStream" %> 
<%@ page import="org.apache.poi.ss.usermodel.DataFormatter" %> 
<%@ page import="org.apache.poi.xssf.usermodel.*" %> 
<%@page import="org.apache.poi.hssf.usermodel.*"%> 
</head> 
<body> 

<table border="1"> 

<% 

String filename="C:\\Users\\User01\\Desktop\\hello.xls" 
String extension = ""; 

int i = filename.lastIndexOf('.'); 
if (i >= 0) { 
    extension = filename.substring(i+1); 
} 

if(extension !=null && extension.contains("xlsx")) 
    { 

    if(filename != null && !filename.equals("")){ 
     try{ 

      FileInputStream fs =new FileInputStream(filename); 
      XSSFWorkbook wb = new XSSFWorkbook (fs); 
      for(int k = 0; k < wb.getNumberOfSheets(); k++){ 
      XSSFSheet sheet = wb.getSheetAt(k); 
      int rows = sheet.getPhysicalNumberOfRows(); 
      DataFormatter formatter = new DataFormatter(); 

      for(int r = 0; r < rows; r++){ 
      XSSFRow row = sheet.getRow(r); 

      int cells = row.getPhysicalNumberOfCells(); 
      %><tr><% 
      for(int n=0;n<cells;n++) 
      { 
       %><td><% 
      =formatter.formatCellValue(row.getCell(n)) 
      %></td><% 
      } 
      %></tr><% 
      } 
      } 
      } 
      catch(Exception e){ 
      System.out.println(e); 
      } 
      } 
      } 
     else { 
      if(filename != null && !filename.equals("")){ 
      try{ 
       FileInputStream fs =new FileInputStream(filename); 
       HSSFWorkbook wb = new HSSFWorkbook (fs); 
       for(int k = 0; k < wb.getNumberOfSheets(); k++){ 
       HSSFSheet sheet = wb.getSheetAt(k); 
       int rows = sheet.getPhysicalNumberOfRows(); 
       DataFormatter formatter = new DataFormatter(); 

       for(int r = 0; r < rows; r++){ 
        HSSFRow row = sheet.getRow(r); 
        int cells = row.getPhysicalNumberOfCells(); 
       %><tr><% 
        for(int n=0;n<cells;n++){ 
       %><td><% 
       =formatter.formatCellValue(row.getCell(n)) 
       %></td><% 
       } 
       %></tr><% 
       } 
       } 
       } 
       catch(Exception e){ 
       System.out.println(e); 
       } 
       } 
       } 
       %> 
     </table> 
     </body> 
     </html>  

excel文件和pom.xml文件添加依賴

<dependency> 
    <groupId>org.apache.poi</groupId> 
    <artifactId>poi-ooxml</artifactId> 
    <version>3.16</version> 
</dependency> 
相關問題