2016-12-12 5 views
0

Ich habe eine Methode, die StreamingOutput Objekt zurückgibt. Und ich möchte dieses StreamingOutput Objekt in Excel-Datei schreiben. Und ich habe den folgenden Code geschrieben, der mir die java.lang.ClassCastException Exception gibt.Schreiben Sie mit dem StreamingOutput-Objekt in die Excel-Datei. (java.lang.ClassCastException)

StreamingOutput stream = getStreamObject(); 
    SXSSFWorkbook workBook = (SXSSFWorkbook) stream; //Exception occurs here 

    FileOutputStream fileOut = new FileOutputStream("/save/excel/file/here"); 
    workBook.write(fileOut); 
    fileOut.flush(); 
    fileOut.close(); 

Also, bitte helfen Sie mir damit. Vielen Dank im Voraus.

+1

jetzt wollen Sie ein neues Objekt vom Typ 'SXSSFWorkbook' vom StreamingOutput erstellen. Kein Wunder, dass Sie dort eine Ausnahme bekommen. Sie sollten eine neue Zeile/Zelle erstellen und 'stream.write()' auf cell.setValue() aufrufen. – XtremeBaumer

+0

Nur um sicher zu sein, haben Sie diese Klasse neu geschrieben? SxSSFWorkbook von Apache scheint Streamingoutput nicht zu implementieren. – Tosh

+0

@Tosh Nein, ich habe die SXSSFWorkbook-Klasse nicht neu geschrieben. Wenn Apache StreamingOutput nicht implementiert, gibt es dann eine andere Möglichkeit, das StreamingOutput-Objekt in Excel fil zu schreiben? Mit anderen Worten meine ich irgendein intermediates Objekt, das von StreamingOutput konvertiert werden kann und von SXSSFWorkbook verwendet werden kann, um in Excel zu schreiben. –

Antwort

1

Die StreamingOutput-Schreibmethode muss überschrieben werden, um das Ausgabeobjekt zurückzugeben. Hier ein Beispiel:

public Response streamExample(){ 
     StreamingOutput stream = new StreamingOutput() { 
      @Override 
      public void write(OutputStream out) throws IOException, WebApplicationException { 
       Writer writer = new BufferedWriter(new OutputStreamWriter(out)); 
       for (int i = 0; i < 10000000 ; i++){ 
        writer.write(i + " "); 
       } 
       writer.flush(); 
      } 
     }; 
     return Response.ok(stream).build(); 
    } 

Bitte überprüfen Sie die Docs of Streaming output und here für weitere Informationen

Verwandte Themen