如何将POI HSSFWorkbook转换为字节?

Sha*_*zeb 34 java apache-poi

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

丢失文档信息

谷歌搜索给了我这个链接,看着Javadocs的工作表和POI HOW-TO说类似的东西.基本上我不能Bytes没有丢失一些信息,应该使用该write方法.

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

Jör*_*ann 77

正如该邮件列表帖子所说

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

您可以将write方法与a一起使用ByteArrayOutputStream来获取字节数组.

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

(close对于a来说ByteArrayOutputStream,这个调用并不是真正需要的,但是如果以后将其改为不同类型的流,则无论如何都要包含它.)


Gag*_*arr 16

怎么样:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
workbook.write(baos);
byte[] xls = baos.toByteArray();
Run Code Online (Sandbox Code Playgroud)

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