2016-07-12 7 views
0

Ich habe eine Anforderung zum Download Excel-Blatt (HSSF-Arbeitsmappe). In der Antwort habe ich den Inhaltstyp und Header alsExcel-Download über Java-Servlet

response.setContentType("application/vnd.ms-excel"); 
     response.setHeader("Content-Disposition", 
       "attachment; filename=user.xls"); 
     OutputStream out = response.getOutputStream(); 
     workBook.write(out); 

gesetzt Wann immer ich auf die Schaltfläche klicken, wird das Servlet ruft aber die Excel wird nicht heruntergeladen zu werden. In der Warnung bekomme ich die Antwort wie

??????????????????????????????????? ?????? Wurzel ???? Eintrag WorkBook ????????????????????????????????????????????? ??????????????????????

Schlagen Sie mir irgendwelche Ideen, um das Problem zu lösen. Vielen Dank im Voraus.

+1

, was genau das Problem ist? –

+1

'out.flush();' nach dem Schreiben? –

+1

Wenn ich das Servlet triff, sollte es die Excel-Datei herunterladen, aber es passiert nicht. Im Frontend, wenn ich die Antwort in Alarm gebe, bekomme ich folgendes "??????????????????????????????? ??????????? Root ???? Eintrag WorkBook ??????????????????????????????? ????????????????????????????????????? " – Vijay

Antwort

0

Versuchen Sie, den MIME-Typ anzugeben. Zum Beispiel:

response.setContentType("application/octet-stream"); 

Für eine allgemeinere Lösung versuchen, diese zu nutzen:

String mimeType = URLConnection 
      .guessContentTypeFromName(file.getName()); 
    if (mimeType == null) { 
     mimeType = "application/octet-stream"; 
    } 

    response.setContentType(mimeType); 
+0

** Keine Änderung im Verhalten des Programms. Das gleiche Problem bleibt bestehen. ** – Vijay

+0

Versuchen Sie, die Inhaltslänge wie folgt zu setzen: 'response.setContentLength ((int) file.length());' – akostajti

+0

Ich habe versucht, die Länge des Inhalts zu setzen. Es wird nicht heruntergeladen. Gibt es eine andere Sache, die mir fehlt – Vijay