Как я могу конвертировать POI HSSFWorkbook в байты?
Вызов Simple toBytes()
создает байты, но exel throws Warning.
Информация о потерянном документе
Googling around дал мне ссылку и посмотрел Javadocs для рабочего листа и POI HOW-TO говорят похожие вещи. В принципе, я не могу получить Bytes
, не теряя некоторую информацию, и вместо этого должен использовать метод write
.
В то время как запись работает нормально, мне действительно нужно отправить байты. Есть ли способ сделать это? Это приводит к появлению байтов без предупреждения.
Ответы
Ответ 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