如何将POI HSSFWorkbook转换为字节?

2022-08-31 17:45:21

调用 Simple toBytes() 确实会产生字节,但 exel 会抛出 Warning。

丢失的文档信息

谷歌搜索给了我这个链接,并查看Javadocs的工作表和POI HOW-TO说类似的事情。基本上,我不能在不丢失一些信息的情况下获得,应该使用该方法。Byteswrite

虽然写入确实工作正常,但我真的需要发送字节。有什么办法可以做到这一点吗?那就是获取字节,而不会得到任何警告。


答案 1

正如那个邮件列表帖子所说

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

您可以将写入方法与 ByteArrayOutputStream 结合使用,以获取字节数组。

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

(对于 a 来说,这个调用并不是真正需要的,但恕我直言,无论如何,如果后来它更改为不同类型的流,它还是很好的样式。closeByteArrayOutputStream


答案 2

怎么样:

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

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


推荐