如何将POI HSSFWorkbook转换为字节?
调用简单的toBytes()
确实产生了字节,但toBytes()
抛出警告。
丢失文档信息
谷歌搜索给了我这个链接 ,看着Javadocs的工作表和POI HOW-TO说类似的东西。 基本上我不能在不丢失某些信息的情况下获取Bytes
而应该使用write
方法。
虽然写入工作正常但我真的需要发送字节。 有什么方法可以做到吗? 这是得到字节没有得到任何警告。
正如该邮件列表post所说
调用
HSSFWorkbook.getBytes()
不会返回重构完整Excel文件所需的所有数据。
您可以将write方法与ByteArrayOutputStream
一起使用来获取字节数组。
ByteArrayOutputStream bos = new ByteArrayOutputStream(); try { workbook.write(bos); } finally { bos.close(); } byte[] bytes = bos.toByteArray();
(对于ByteArrayOutputStream
,实际上并不需要close
调用,但是如果以后将其更改为不同类型的流,则无论如何都要包含它。
怎么样:
ByteArrayOutputStream baos = new ByteArrayOutputStream(); workbook.write(baos); byte[] xls = baos.toByteArray();
要获取完整的excel文件,必须调用write(OutputStream)方法。 如果你想要那个字节,只需给出一个ByteArrayOutputStream
- 使用java servlet将excel文件发送到客户端
- 使用Apache POI 4.0运行官方示例LineChars和ScatterChart时出现问题
- 通过Apache POI读取大型Excel文件(xlsx)时出错
- 将MS文档打开到JFrame中
- Apache-POI:无法写入现有工作簿
- 如何使用POI加载大型xls文件时解决java堆空间错误
- 如何避免Apache POI中的java.lang.NoSuchMethodError:org.apache.poi.util.IOUtils.copy(Ljava / io / InputStream; Ljava / io / OutputStream;)
- 使用Apache POI基于csv表更新Excel工作表值
- 使用POI写入现有xls文件