我用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文件以正确的形式打开。
知道为什么吗?
答案 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以了解从那时起修复的所有错误