Wie kann ich einen Eingabestream vom HSSFWorkbook-Objekt erhalten?

8

Ich möchte, dass meine Webanwendungsbenutzer einige Daten als Excel-Datei herunterladen.

Ich habe die nächste Funktion, um einen Input Stream im Antwortobjekt zu senden.

%Vor%

Ich möchte mein HSSFWorkbook-Objekt in einen Eingabestream umwandeln und es an die vorherige Methode übergeben.

%Vor%

Ссылка

    
Sergio del Amo 18.12.2008, 19:15
quelle

3 Antworten

10

Das Problem mit Ihrer Frage besteht darin, dass Sie OutputStreams und InputStreams mischen. Ein InputStream ist etwas, von dem Sie lesen, und ein OutputStream ist etwas, an das Sie schreiben.

So schreibe ich ein POI-Objekt in den Ausgabestrom.

%Vor%

Wenn Sie Ihren vorhandenen Code erneut verwenden möchten, müssen Sie die POI-Daten irgendwo speichern und dann THAT in einen Eingabestream umwandeln. Das wäre leicht gemacht, indem man es in einen ByteArrayOutputStream schreibt und dann diese Bytes mit einem ByteArrayInputStream liest, aber ich würde es nicht empfehlen. Ihre vorhandene Methode wäre nützlicher als eine generische Pipe-Implementierung, bei der Sie die Daten von einem InputStream zu und OutputStream leiten können, aber Sie benötigen sie nicht zum Schreiben von POI-Objekten.

    
Mr. Shiny and New 安宇 18.12.2008, 21:08
quelle
0

Ich glaube, ich verstehe, was Sie zu tun versuchen (vielleicht bin ich unterschwellig).

Sie brauchen nicht so viel Code - schauen Sie sich die Schreibmethode an -

%Vor%

Soweit ich mich erinnere, als ich mit POI gearbeitet habe, habe ich das gemacht. Wenn Sie sich in einem Webframework befinden, müssen Sie es möglicherweise abschliessen, damit das Framework nicht versucht, etwas mit dem ServletOutputStream zu tun, nachdem Sie es geschlossen haben. Wenn es versucht wird, erhalten Sie eine Ausnahme, die Ihnen sagt, dass der Ausgabestream bereits geschlossen ist.

    
lucas 18.12.2008 20:31
quelle
0

Sie können einen InputStream von einem Objekt erstellen.

%Vor%     
Xiong xiao Luo 16.03.2018 07:12
quelle

Tags und Links