Подтвердить что ты не робот

Как я могу конвертировать POI HSSFWorkbook в байты?

Вызов Simple toBytes() создает байты, но exel throws Warning.

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

Googling around дал мне ссылку и посмотрел Javadocs для рабочего листа и POI HOW-TO говорят похожие вещи. В принципе, я не могу получить Bytes, не теряя некоторую информацию, и вместо этого должен использовать метод write.

В то время как запись работает нормально, мне действительно нужно отправить байты. Есть ли способ сделать это? Это приводит к появлению байтов без предупреждения.

4b9b3361

Ответ 1

Как говорится в этом списке рассылки

Вызов HSSFWorkbook.getBytes() не возвращает все данные, построить полный файл Excel.

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

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

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

Ответ 2

Как насчет:

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

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