52

调用 SimpletoBytes()确实会产生字节,但 exel 会引发警告。

丢失文件信息

谷歌搜索给了我这个链接并查看Javadocs for worksheet 和 POI HOW-TO say similar things 。基本上我不能不Bytes丢失一些信息而应该使用该write方法。

虽然 write 工作正常,但我真的需要将字节发送过来。有什么办法可以做到吗?那就是在没有任何警告的情况下获取字节。

4

2 回答 2

111

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

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

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

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

closea 并不真正需要调用ByteArrayOutputStream,但恕我直言,无论如何包含它是一种很好的风格,以防它后来更改为不同类型的流。)

于 2012-04-17T08:45:30.163 回答
22

怎么样:

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

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

于 2012-04-17T08:45:38.257 回答