diff --git a/hutool-poi/src/main/java/cn/hutool/poi/excel/reader/MapSheetReader.java b/hutool-poi/src/main/java/cn/hutool/poi/excel/reader/MapSheetReader.java index 9a0f65d9f..ec8a2fc00 100644 --- a/hutool-poi/src/main/java/cn/hutool/poi/excel/reader/MapSheetReader.java +++ b/hutool-poi/src/main/java/cn/hutool/poi/excel/reader/MapSheetReader.java @@ -44,7 +44,9 @@ public class MapSheetReader extends AbstractSheetReader if (headerRowIndex < firstRowNum) { throw new IndexOutOfBoundsException(StrUtil.format("Header row index {} is lower than first row index {}.", headerRowIndex, firstRowNum)); } else if (headerRowIndex > lastRowNum) { - throw new IndexOutOfBoundsException(StrUtil.format("Header row index {} is greater than last row index {}.", headerRowIndex, firstRowNum)); + throw new IndexOutOfBoundsException(StrUtil.format("Header row index {} is greater than last row index {}.", headerRowIndex, lastRowNum)); + } else if (startRowIndex > lastRowNum) { + throw new IndexOutOfBoundsException(StrUtil.format("startRowIndex row index {} is greater than last row index {}.", startRowIndex, lastRowNum)); } final int startRowIndex = Math.max(this.startRowIndex, firstRowNum);// 读取起始行(包含) final int endRowIndex = Math.min(this.endRowIndex, lastRowNum);// 读取结束行(包含) diff --git a/hutool-poi/src/test/java/cn/hutool/poi/excel/ExcelReadTest.java b/hutool-poi/src/test/java/cn/hutool/poi/excel/ExcelReadTest.java index b50218aac..f88e2e236 100644 --- a/hutool-poi/src/test/java/cn/hutool/poi/excel/ExcelReadTest.java +++ b/hutool-poi/src/test/java/cn/hutool/poi/excel/ExcelReadTest.java @@ -251,4 +251,21 @@ public class ExcelReadTest { final ExcelReader reader = ExcelUtil.getReader(ResourceUtil.getStream("read_row_npe.xlsx")); reader.readColumn(0, 1); } + + @Test + public void readIssueTest() { + //https://gitee.com/dromara/hutool/issues/I5OSFC + final ExcelReader reader = ExcelUtil.getReader(ResourceUtil.getStream("read.xlsx")); + final List> read = reader.read(1,2,2); + for (Map map : read) { + Console.log(map); + } + //超出lastIndex 抛出相应提示:startRowIndex row index 4 is greater than last row index 2. + //而非:Illegal Capacity: -1 + try { + final List> readGreaterIndex = reader.read(1,4,4); + } catch (Exception e) { + Console.log(e.toString()); + } + } } diff --git a/hutool-poi/src/test/resources/read.xlsx b/hutool-poi/src/test/resources/read.xlsx new file mode 100644 index 000000000..10eda0923 Binary files /dev/null and b/hutool-poi/src/test/resources/read.xlsx differ