Apache POI创build了以后无法打开的xlsx文件。 检测到邮政炸弹

当我使用Apache POI创buildxlsx文件(当文件很大时),当MS Excel或LibreOffice Calc打开它时,它创build的这个文件不能被相同的Apache POI打开。

当我尝试用Apache POI打开这个工作簿时,就是这么说的

检测到邮政炸弹

我可以打开它只有当我调用ZipSecureFile.setMinInflateRatio(0)或重新保存在LibreOffice(MS Excel在这里没有帮助)。

如何解决这个问题? 为什么POI创build无法打开的文件?

只需按照错误消息的build议进行操作,并通过不同的方式设置限制

ZipSecureFile.setMinInflateRatio(0)

您似乎有一个相当特殊的用例,它生成的文件类似于某些文件,恶意用户可能会使用这些文件来使服务器崩溃,耗尽CPU或耗尽内存。 为了避免这种情况,Apache POI具有此限制,但可以根据需要进行不同的设置。 因此,如果文件不是来自不可信用户,则可以轻松调整这些限制以避免出现错误消息。

Excel或LibreOffice可能比Apache POI更优化文件内容,从而产生一个没有达到这些限制的文件。