调用Simple toBytes()
会生成字节但exel会抛出警告。
丢失文档信息
谷歌搜索给了我link并查看Javadocs工作表和POI HOW-TO说类似的事情。基本上我无法在不丢失某些信息的情况下获取Bytes
,而应使用write
方法。
虽然写入工作正常但我真的需要发送字节。有什么方法可以做到吗?这样就可以得到没有任何警告的字节。
答案 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