有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

excel什么是java。lang.ArrayIndexOutOfBoundsException:使用Apache POI打开XLS文件时,长度为46410的索引2超出界限是什么意思?

我有一个MicrosoftExcelXLS文件(2003格式),当尝试使用ApachePOI3.17(和4.1.2)打开时,我会得到下面的堆栈跟踪。我可以在Excel 2016中打开Excel文件,没有任何错误

我注意到,使用Excel 2016保存文件时,我可以通过Apache POI打开它。它还显示了使用Excel 2016保存后,文件大小从15 MB减少到11 MB

原始文件确实有很多空白列,这些空白列扩展得非常远,减少文件中的一些行最终允许我使用ApachePOI打开它,但这并不特定于行中的任何特定内容。我无法发布原始文件,因为敏感信息和无法编辑它,最终解决了问题

打开XLS文件的代码

    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.poifs.filesystem.POIFSFileSystem;


    final POIFSFileSystem fs = new POIFSFileSystem(new File("/home/dev/Downloads/test.xls"), true);
    final HSSFWorkbook xlsToAppendWorkbook = new HSSFWorkbook(fs);

Stacktrace

java.lang.ArrayIndexOutOfBoundsException: Index -2 out of bounds for length 46410
                at org.apache.poi.poifs.filesystem.BlockStore$ChainLoopDetector.claim(BlockStore.java:99)
                at org.apache.poi.poifs.filesystem.NPOIFSFileSystem.readCoreContents(NPOIFSFileSystem.java:414)
                at org.apache.poi.poifs.filesystem.NPOIFSFileSystem.<init>(NPOIFSFileSystem.java:234)
                at org.apache.poi.poifs.filesystem.NPOIFSFileSystem.<init>(NPOIFSFileSystem.java:167)
                at org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java:98)
                at

共 (0) 个答案