POI 3.2 Excel文件数据已丢失

时间:2014-03-06 16:11:13

标签: java excel apache-poi corruption webdynpro

我用Java生成一个带有POI 3.2的Excel文件(我可以用于我的客户端的最新版本)。 这是我的代码。正如您所看到的,我正在使用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

当我在'不发送'上按2次时,de excell文件以正确的形式打开。

知道为什么吗?

1 个答案:

答案 0 :(得分:2)

不要拨打wb.getBytes(),它不会做你想要的。来自getBytes() javadoc

  

方法getBytes - 获取XLS文件的HSSF部分的字节。用它来自己构建一个POI POIFSFileSystem。

相反,如果您希望将整个xls文件作为字节数组,请执行

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

最后,Apache POI 3.2是古老的,现在已经超过5年了!你真的应该升级,看看changelog以了解从那时起修复的所有错误