当尝试使用Apache POI打开Excel文件时,为什么会出现异常“IOException:ZIP条目大小太大”?

时间:2014-04-07 17:37:31

标签: java excel apache zip apache-poi

问题与描述here

相同

但由于那里找不到解决办法,试图在这里重新开启这个话题? 简而言之,我使用的是Apache POI 3.8。我有一个带有宏的 *。xlsm 文件。我正在尝试在部署应用程序时打开此文件,但是在 XSSFWorkbook "构造函数,表示" ZIP条目大小太大"。    奇怪的是,我能够在我的IDEA中本地执行该操作而没有任何问题。    如果有人愿意分享正在发生的事情的想法,如果有任何过去有这样的问题,我将不胜感激。

2 个答案:

答案 0 :(得分:2)

通过相关代码浏览一下,我的猜测是它取决于文件的位置。可能如果它是一个文件,那么poi处理它的方式与它是某些其他来源(例如在内存中)的处理方式不同?

如果是这种情况,那么您可以通过将文件写入临时文件然后将其加载到poi来解决问题。具体来说,如果您从文件创建XSSFWorkbook,则不应该遇到此问题。根据javadoc,你这样做:

   OPCPackage pkg = OPCPackage.open(path);
   XSSFWorkbook wb = new XSSFWorkbook(pkg);
   // work with the wb object
   ......
   pkg.close(); // gracefully closes the underlying zip file

答案 1 :(得分:2)

原因是Maven在构建应用程序存档时破坏了模板文件。