Вопрос по java, apache-poi – Как я могу преобразовать POI HSSFWorkbook в байты?

30

Calling SimpletoBytes() производит байты, но exel выдает предупреждение.

Потерянная информация о документе

Погуглил, дал мне этоссылк и смотрит на Javadocs для листа и POIКА скажи похожие вещи. В принципе не могу получитьBytes без потери информации и должен использоватьwrite метод вместо этого.

Пока запись работает нормально, мне действительно нужно отправить байты. Есть ли способ, которым я могу это сделать? То есть получить байты без всякого предупреждения.

Ваш Ответ

2   ответа
12

Как насчет

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

Чтобы получить полный файл Excel, вы должны вызвать метод write (OutputStream). Если вам нужны байты, просто укажите ByteArrayOutputStream

67

InvokingHSSFWorkbook.getBytes() не возвращает все данные, необходимые для восстановления полного файла Excel.

Вы можете использовать метод записи сByteArrayOutputStream чтобы получить байтовый массив.

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

(Theclose вызов не нужен дляByteArrayOutputStream, но в любом случае это хороший стиль, чтобы включить его в случае, если его позже сменили на другой вид потока.)

Как мы можем сделать это наоборот? Я имею в виду массив байтов для HSSFWorkbook? Chetan Nellekeri
@ ChetanNellekeri Вероятно, лучше задать этот вопрос отдельн Jörn Horstmann

Похожие вопросы