如何将POI HSSFWorkbook转换为字节?

时间:2012-04-17 07:04:15

标签: java apache-poi

调用Simple toBytes()会生成字节但exel会抛出警告。

  

丢失文档信息

谷歌搜索给了我link并查看Javadocs工作表和POI HOW-TO说类似的事情。基本上我无法在不丢失某些信息的情况下获取Bytes,而应使用write方法。

虽然写入工作正常但我真的需要发送字节。有什么方法可以做到吗?这样就可以得到没有任何警告的字节。

2 个答案:

答案 0 :(得分:70)

正如该邮件列表帖子所说

  

调用HSSFWorkbook.getBytes()不会返回重新生成所需的所有数据   构建一个完整的Excel文件。

您可以使用带有ByteArrayOutputStream的write方法来获取字节数组。

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

close并不真正需要ByteArrayOutputStream调用,但是如果以后将其更改为其他类型的流,则无论如何都要包含这种调用。)

答案 1 :(得分:12)

怎么样:

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

为了获得完整的excel文件,必须调用write(OutputStream)方法。如果你想要那个字节,只需给出一个ByteArrayOutputStream