2016-08-03 16 views
0

Ich habe eine Excel-Datei und wollte das gleiche in einer JSP-Seite anzeigen. Im mit dem Code unten die gleichenWie Excel-Datei im Browser mit Jsp anzeigen

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

anzuzeigen Wenn ich versuche, den jsp Link zu klicken, wird die Excel-Tabelle automatisch heruntergeladen. Aber ich möchte, dass das Excel-Blatt im Browser auf der JSP-Seite angezeigt wird.

Jede Hilfe auf dem oben genannten wird sehr geschätzt.

Antwort

0

für mich sollten Sie Ihre Datei in der Antwort des Servlets, so etwas wie dieser Strom:

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

es zwei Ansätze sein können.

  • Wenn Sie keine Probleme haben, in Hosting-Excel-Datei 3rd-Party-Dienste wie Google Text & Tabellen oder MS Microsoft Onedrive, dann können Sie Ihre Dateien dort hochladen und embedded html Code von diesen Diensten erzeugt verwenden.

  • Eine andere Alternative ist Excel-Datei mit einigen Bibliotheken wie apache-poi zu verarbeiten und auf JSP-Seite zu rendern.

+0

Dank für die Antwortdatei angezeigt werden soll. Ich habe Apache-Poi verwendet und konnte das Input-Stream-Objekt des entsprechenden Arbeitsblatts abrufen. Nicht sicher, wie der Inhalt übergeben und in der JSP angezeigt werden soll. Jede Hilfe wird sehr geschätzt. – vr3w3c9

+0

Verwenden Sie ein Framework? Normalerweise, wie übergeben Sie Daten vom Controller zur Ansicht? – niyasc

+0

Ich verwende kein Framework, für die anderen Seiten, wenn die Anfrage aufgerufen wird, wird die Anfrage an den Server zur Verarbeitung gesendet, die Anwendung verarbeitet die Anfrage und gibt die Antwort in Form einer Zeichenfolge zurück und ich benutze die JSP-Antwortobjekte um die Zeichenfolge zurück in den JSP zu schreiben. – vr3w3c9

0

i folgenden Code verwenden Excel in jsp Seite

<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>  

und fügen Sie Dependency in pom.xml Datei

<dependency> 
    <groupId>org.apache.poi</groupId> 
    <artifactId>poi-ooxml</artifactId> 
    <version>3.16</version> 
</dependency> 
Verwandte Themen