【发布时间】:2017-12-12 14:06:52
【问题描述】:
当我有时使用 Apache POI 创建 xlsx 文件时(当文件很大时),它会创建一个无法由同一个 Apache POI 打开的文件,而 MS Excel 或 LibreOffice Calc 可以毫无问题地打开它。
当我尝试使用 Apache POI 打开此工作簿时,它显示
检测到邮编炸弹
只有当我调用ZipSecureFile.setMinInflateRatio(0) 或在 LibreOffice 中重新保存它时才能打开它(MS Excel 在这里没有帮助)。
如何解决这个问题?为什么 POI 会创建无法打开的文件?
【问题讨论】:
-
在我对Question 的回答中,我已经讲述了 zip 炸弹检测的工作原理。所以不是“POI 创建了它无法打开的文件”,而是您正在使用您的代码执行此操作。可能是因为您使用的是完全相同的数千次测试数据,因此导致数据压缩率不太可能。
-
数据是真实的,它是从另一个 xlsx(在 MS Excel 中创建的)复制而来的,并做了一些更改。该源 xlsx 已打开并完美读取,生成的不是(使用 POI)。正如我所说,如果我在 libreOffice 中不做任何更改就保存它,它会毫无问题地打开,所以问题肯定不在数据中
标签: java excel apache-poi