poi 之 HSSFWorkbook 转化 byte[] 小坑记录

1、错误的转化方式,直接使用HSSFWorkbook提供的 .getBytes(),

查阅资料地址:HSSFWorkbook API

    byte[] bytes = workbook.getBytes();

查看资料发现 构建返回的byte[] 不是一个完整的Excel文件所需的所有数据,生成的文件会导致excel告警,可能部分版本无法打开文件。

2、正确的转换方式

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

对此而言,close实际上并不需要该调用ByteArrayOutputStream,但是,恕我直言,无论如何将其包括在内都是很好的样式,以防以后将其更改为其他类型的流。


  目录