WorkbookFactory.create(inputstream)抛出StringIndexOutOfBounds异常

时间:2018-06-21 06:05:30

标签: java apache-poi

我无法使用Apache POI读取xlsm文件。我收到错误java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1。

我的程序如下:

FileInputStream file=new FileInputStream(new File(path));
out.print("aaaaaa");
Workbook workbook=null;out.print("1111111");
workbook=WorkbookFactory.create(file);
out.print("222222");

22222从不打印,但出现异常。打印aaaaaaa和111111。

我已按照Error while reading an xlsm file using POI Framework in Java下载了所有最新的jar 我已经尝试过使用XSSFWorkbook。 我曾尝试通过File对象而不是FileInputStream传递,如某些SO答案所示。

这是只读的xlsm 我的Java版本1.7。

当我尝试使用新的xlsm文件时,该程序运行良好,也可以与其他只读xlsm文件(也受保护,但具有不同的模板)一起运行。

这是否意味着我的特定xlsm文件模板可能存在问题?还是我想念其他东西? 有人可以帮忙解决此问题吗?

更新:我将代码块放在一个小的Java类中,然后直接复制到服务器上我的Web应用程序文件夹之外的文件夹中,并且在那儿工作正常...这可能是svn相关问题吗?

1 个答案:

答案 0 :(得分:0)

我的程序现在运行良好。问题是在我的测试服务器中,有多个版本的poi,poi-ooxml和poi-ooxml-schemas jar散布在多个文件夹中。所以我删除了所有这些,在单个路径中仅添加了最新版本的jars(3.17),添加到了classpath,也添加了jars依赖(以防万一),一切都很好。希望这对某人有帮助。