Wie kann ich POI HSSFWorkbook in Bytes konvertieren?

Lesezeit: 1 Minute

Einfach anrufen toBytes() erzeugt zwar die Bytes, aber Excel gibt eine Warnung aus.

Informationen zu verlorenen Dokumenten

Beim Googeln habe ich das gefunden Verknüpfung und anschauen Javadocs für Arbeitsblatt und POI WIE MAN ähnliche Dinge sagen. Im Grunde kann ich es nicht bekommen Bytes ohne einige Informationen zu verlieren und sollte das verwenden write Methode statt.

Während das Schreiben gut funktioniert, muss ich unbedingt die Bytes senden. Gibt es eine Möglichkeit, wie ich das machen kann? Das bedeutet, die Bytes abzurufen, ohne eine Warnung zu erhalten.

Wie es in diesem Mailinglistenbeitrag heißt

Aufrufen HSSFWorkbook.getBytes() gibt nicht alle Daten zurück, die zum Wiederherstellen einer vollständigen Excel-Datei erforderlich sind.

Sie können die Schreibmethode mit a verwenden ByteArrayOutputStream um an das Byte-Array zu gelangen.

ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
    workbook.write(bos);
} finally {
    bos.close();
}
byte[] bytes = bos.toByteArray();

(Der close Anruf ist für a nicht wirklich nötig ByteArrayOutputStreamaber meiner Meinung nach ist es trotzdem ein guter Stil, ihn einzubinden, für den Fall, dass er später in eine andere Art von Stream geändert wird.)

  • Wie können wir es umgekehrt machen? Ich meine Byte-Array zu HSSFWorkbook?

    – Chetan Nellekeri

    5. März 2019 um 7:43

  • @ChetanNellekeri Es ist wahrscheinlich besser, das als separate Frage zu stellen

    – Jörn Horstmann

    5. März 2019 um 10:12 Uhr

  • Für alle, die C# verwenden, funktioniert das auch dort ziemlich gut, ByteArrayOutputStream ist in NPOI.utils verfügbar

    – Max Carroll

    11. Juni 2020 um 16:17 Uhr

Wie wäre es mit:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
workbook.write(baos);
byte[] xls = baos.toByteArray();

Um eine vollständige Excel-Datei zu erhalten, müssen Sie die Methode write(OutputStream) aufrufen. Wenn Sie davon Bytes möchten, geben Sie einfach einen ByteArrayOutputStream an

1452000cookie-checkWie kann ich POI HSSFWorkbook in Bytes konvertieren?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy