POI 3.2 Excel文件数据丢失了

我使用POI 3.2(最新版本可以用于我的客户端)生成Java文件。 这是我的代码。 正如你所看到的,我正在使用HSSF,因为我需要制作一个XLS文件。

HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("Reporting"); sheet.setColumnWidth(250,250); HSSFRow Row; HSSFCell Cell; //Content part (doesn't matter) IWDResource resource = WDResourceFactory.createCachedResource( wb.getBytes(), "workbook.xls", WDWebResourceType.XLS); wdContext.currentContextElement().setXls(resource); 

现在我已经下载了XLS文件,我想打开它,但该文件似乎已损坏。

链接上的图片: http : //tinyurl.com/nop52sh

当我按“不发送”两次时,de excell文件以正确的格式打开。

任何想法为什么?

不要调用wb.getBytes() ,它不会做你想要的。 从getBytes()javadoc

方法getBytes – 获取XLS文件的HSSF部分的字节。 使用这个来自己构build一个POI POIFSFileSystem。

相反,如果你想整个xls文件作为一个字节数组,那么

 ByteArrayOutStream baos = new ByteArrayOutStream(); wb.write(baos); byte[] xlsBytes = baos.toByteArray(); 

最后,Apache POI 3.2是古老的,现在已经5年多了! 你真的应该升级,看到从那以后所有的错误的想法更新日志