java - POI 3.2 Excel 文件数据丢失

标签 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't matter)


IWDResource resource = WDResourceFactory.createCachedResource(
                wb.getBytes(),
                "workbook.xls",
                WDWebResourceType.XLS);

wdContext.currentContextElement().setXls(resource);

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

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

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

知道为什么吗?

最佳答案

不要调用wb.getBytes(),它不会执行您想要的操作。来自 getBytes() javadoc

Method getBytes - get the bytes of just the HSSF portions of the XLS file. Use this to construct a POI POIFSFileSystem yourself.

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

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

最后,Apache POI 3.2 已经很古老了,现在已经有 5 年多了!您确实应该升级,请参阅 changelog了解自那时以来修复的所有错误

关于java - POI 3.2 Excel 文件数据丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22229874/

相关文章:

javax.servlet.ServletException : java. lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Cell

java - 我正在制作一个安全的、编译时的 String.format(...) 等价物。问题仍然存在

单元格引用中的 VBA 变量

VBA:基于列标题的偏移量

mysql - 列出两个日期之间的日期,并将与新日期关联的金额除以各自的日期和 ID R/PYTHON/EXCEL

java - 使用 XWPFRun 一次运行粗体和平面文本,写入 word

java - 无法使用 Apache POI 删除行,因为单元格包含电子邮件地址

java - 如何找到 org.eclipse.persistence maven 依赖项?

java - 如果声明但未初始化对象的变量是否会使用内存空间?

java - RecyclerView不显示任何项目