How can I convert POI HSSFWorkbook to bytes?

apache-poi, java

Solution

As that mailing list post said

Invoking `HSSFWorkbook.getBytes()` does not return all of the data necessary to re- construct a complete Excel file.

You can use the write method with a `ByteArrayOutputStream` to get at the byte array.

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

(The `close` call is not really needed for a `ByteArrayOutputStream`, but imho it is good style to include anyway in case its later changed to a different kind of stream.)

Problem

Calling Simple `toBytes()` does produce the bytes, but Excel throws Warning. Lost Document information Googling around gave me this link and looking at Javadocs for worksheet and POI HOW-TO say similar things. Basically, I cannot get `Bytes` without losing some information and should use the `write` method instead. While write does work fine, I really need to send the bytes over. Is there any way I can do that? That is, get the bytes without getting any warning.

Original source