From bffd1d204c703da3b17858cea0619ea1c2f2670b Mon Sep 17 00:00:00 2001 From: "jin.huang" Date: Fri, 1 Apr 2022 17:53:53 +0800 Subject: [PATCH] =?UTF-8?q?Fix=20=E8=AF=BB=E5=8F=96=E7=A9=BA=E8=A1=8CNPE?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/hutool/poi/excel/cell/CellUtil.java | 6 ++++++ .../java/cn/hutool/poi/excel/ExcelReadTest.java | 6 ++++++ hutool-poi/src/test/resources/read_row_npe.xlsx | Bin 0 -> 8651 bytes 3 files changed, 12 insertions(+) create mode 100644 hutool-poi/src/test/resources/read_row_npe.xlsx diff --git a/hutool-poi/src/main/java/cn/hutool/poi/excel/cell/CellUtil.java b/hutool-poi/src/main/java/cn/hutool/poi/excel/cell/CellUtil.java index 171106b59..f4747bae3 100644 --- a/hutool-poi/src/main/java/cn/hutool/poi/excel/cell/CellUtil.java +++ b/hutool-poi/src/main/java/cn/hutool/poi/excel/cell/CellUtil.java @@ -203,6 +203,9 @@ public class CellUtil { * @since 5.5.0 */ public static Cell getCell(Row row, int cellIndex) { + if (null == row) { + return null; + } Cell cell = row.getCell(cellIndex); if (null == cell) { return new NullCell(row, cellIndex); @@ -219,6 +222,9 @@ public class CellUtil { * @since 4.0.2 */ public static Cell getOrCreateCell(Row row, int cellIndex) { + if (null == row) { + return null; + } Cell cell = row.getCell(cellIndex); if (null == cell) { cell = row.createCell(cellIndex); 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 72ac31fab..22f1ba075 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 @@ -244,4 +244,10 @@ public class ExcelReadTest { Assert.assertEquals("李四", objects.get(1)); Assert.assertEquals("", objects.get(2)); } + + @Test + public void readColumnNPETest() { + ExcelReader reader = ExcelUtil.getReader(ResourceUtil.getStream("read_row_npe.xlsx")); + reader.readColumn(0, 1); + } } diff --git a/hutool-poi/src/test/resources/read_row_npe.xlsx b/hutool-poi/src/test/resources/read_row_npe.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..662ef950bfd45192bfe3a1f2a3d41da94045e07f GIT binary patch literal 8651 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 P{(k^GSgxGpQSbi&