使用Apache POI打开.xlsm文件会导致Tomcat崩溃

时间:2014-11-21 19:46:24

标签: java excel tomcat jasper-reports apache-poi

我正在尝试使用Apache POI(3.7)在两个excel文件之间复制数据。

文件A包含使用JasperReports生成的原始数据。文件B有两张纸。第一张表包含使用宏填充的表,第二张表包含从第一张表中提供表的数据。

我的任务是将第一个文件中的数据导入第二个文件的第二张。

代码正在处理地球表面上的每个xlsm文件,除了我需要工作的那个......

代码:

    if (outputfile.getAbsolutePath().contains(".xlsx") ||      outputfile.getAbsolutePath().contains(".xlsm")) {
        FileInputStream inputStreamForReport = new FileInputStream(outputfile);
        pack = OPCPackage.open(inputStreamForReport);
        outputWorkbook = WorkbookFactory.create(pack);
        inputStreamForReport.close();
    } else {
        inputStream2 = new FileInputStream(outputfile);
        fileSystem2 = new POIFSFileSystem(inputStream2);
        outputWorkbook = WorkbookFactory.create(fileSystem2);
        inputStream2.close();
    }

正如我之前提到的,这适用于除了我需要工作的文件之外的所有文件。如果我使用那个文件,当我到达这一行时:

outputWorkbook = WorkbookFactory.create(pack);

Tomcat只是坐在那里没有做任何事情。使用htop我可以看到其中一个核心是100%。这种情况永远持续下去,Tomcat死了。我在日志中没有收到任何消息,它只是坐在那里。我正在使用Tomcat7。

你可以在这里找到让我疯狂的文件:https://drive.google.com/file/d/0B4tieEreAMvUdUdHQ1doM2lzbFU/view?usp=sharing

我不知道宏是如何工作的。所以这可能是一个愚蠢的错误。 任何想法将不胜感激。抱歉我的英文。

0 个答案:

没有答案