Java POI 3.2 Excel文件数据已丢失

Java POI 3.2 Excel文件数据已丢失,java,excel,apache-poi,corruption,webdynpro,Java,Excel,Apache Poi,Corruption,Webdynpro,我正在用POI 3.2(我可以用于我的客户机的最新版本)用Java生成一个Excel文件。 这是我的密码。正如您所看到的,我使用HSSF是因为我需要制作一个XLS文件 HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("Reporting"); sheet.setColumnWidth(250,250); HSSFRow Row; HSSFCell Cell; //Content part (doesn

我正在用POI 3.2(我可以用于我的客户机的最新版本)用Java生成一个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文件后,我想打开它,但该文件似乎已损坏

链接上的图像:

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


知道为什么吗?

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

方法getBytes—仅获取XLS文件的HSSF部分的字节。您可以自己使用它来构建POI POIFSS文件系统

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

ByteArrayOutStream baos = new ByteArrayOutStream();
wb.write(baos);
byte[] xlsBytes = baos.toByteArray();
最后,ApachePOI3.2很古老,现在已经超过5年了!您真的应该升级,请参阅,了解从那时起修复的所有bug