From c660d79bf21c1a1d7aee56cd3466812652bd2de2 Mon Sep 17 00:00:00 2001 From: hellozrh <455741807@qq.com> Date: Mon, 16 Jan 2023 15:06:25 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E8=A7=A3=E5=86=B3excel=E8=AF=BB=E5=88=B0?= =?UTF-8?q?=E6=97=B6=E7=A9=BA=E7=99=BD=E8=A1=8CrowHanler=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E7=9A=84=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/hutool/core/collection/CollUtil.java | 29 +++++++++++++++++++ .../hutool/core/collection/CollUtilTest.java | 23 +++++++++++++++ .../poi/excel/sax/Excel03SaxReader.java | 9 ++++-- .../cn/hutool/poi/excel/ExcelUtilTest.java | 29 +++++++++++++++++++ 4 files changed, 88 insertions(+), 2 deletions(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java b/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java index fa94976ed..c89186805 100755 --- a/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java @@ -1652,6 +1652,35 @@ public class CollUtil { return collection == null || collection.isEmpty(); } + /** + * 集合是否为空。 + * 如果集合中所有元素为null或空白串,也认为此集合为空。 + * @param collection + * @return + */ + public static boolean isBlank(Collection collection) { + if(isEmpty(collection)){ + return true; + } + + for(Object o: collection){ + if(ObjectUtil.isNotEmpty(o)){ + return false; + } + } + return true; + } + + /** + * 集合是否为非空。 + * 集合长度大于0,且所有元素中至少有一个不为null或空白串。 + * @param collection + * @return + */ + public static boolean isNotBlank(Collection collection) { + return false == isBlank(collection); + } + /** * 如果给定集合为空,返回默认集合 * diff --git a/hutool-core/src/test/java/cn/hutool/core/collection/CollUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/collection/CollUtilTest.java index b9b9d4775..5400cd5fe 100755 --- a/hutool-core/src/test/java/cn/hutool/core/collection/CollUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/collection/CollUtilTest.java @@ -1047,4 +1047,27 @@ public class CollUtilTest { final Object first = CollUtil.getFirst(nullList); Assert.assertNull(first); } + + @Test + public void blankTest() { + List strs = new ArrayList<>(); + strs.add(null); + strs.add(""); + strs.add(""); + + boolean c = CollUtil.isBlank(strs); + Assert.assertEquals(true, c ); + + + List arrs = new ArrayList<>(); + arrs.add(null); + arrs.add(""); + arrs.add(" "); + arrs.add(""); + arrs.add(" a "); + + boolean d = CollUtil.isNotBlank(arrs); + Assert.assertEquals(true, d ); + } + } diff --git a/hutool-poi/src/main/java/cn/hutool/poi/excel/sax/Excel03SaxReader.java b/hutool-poi/src/main/java/cn/hutool/poi/excel/sax/Excel03SaxReader.java index 0f1f3d184..e9416b9cd 100644 --- a/hutool-poi/src/main/java/cn/hutool/poi/excel/sax/Excel03SaxReader.java +++ b/hutool-poi/src/main/java/cn/hutool/poi/excel/sax/Excel03SaxReader.java @@ -1,7 +1,9 @@ package cn.hutool.poi.excel.sax; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.io.IoUtil; import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.poi.excel.sax.handler.RowHandler; @@ -344,8 +346,11 @@ public class Excel03SaxReader implements HSSFListener, ExcelSaxReader(this.rowCellList.size()); } diff --git a/hutool-poi/src/test/java/cn/hutool/poi/excel/ExcelUtilTest.java b/hutool-poi/src/test/java/cn/hutool/poi/excel/ExcelUtilTest.java index 2b66d5754..c5be2efa9 100644 --- a/hutool-poi/src/test/java/cn/hutool/poi/excel/ExcelUtilTest.java +++ b/hutool-poi/src/test/java/cn/hutool/poi/excel/ExcelUtilTest.java @@ -1,11 +1,21 @@ package cn.hutool.poi.excel; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.poi.excel.cell.CellLocation; +import cn.hutool.poi.excel.sax.handler.RowHandler; import org.junit.Assert; import org.junit.Test; +import java.io.FileInputStream; +import java.io.InputStream; +import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; public class ExcelUtilTest { @@ -61,4 +71,23 @@ public class ExcelUtilTest { reader.close(); Assert.assertEquals(1L, list.get(1).get("鞋码")); } + + @Test + public void readBySaxTest() { + String path = "readBySax.xls"; + AtomicInteger assertRowNum = new AtomicInteger(0); + try{ + ExcelUtil.readBySax(path, 0, new RowHandler() { + @Override + public void handle(int sheetIndex, long rowIndex, List rowCells) { + System.out.println(StrUtil.format("sheetIndex={};rowIndex={},rowCells={}",sheetIndex,rowIndex,rowCells)); + assertRowNum.addAndGet(1); + } + }); + }catch (Exception ex){ + ex.printStackTrace(); + } + Assert.assertEquals(3, assertRowNum.intValue()); + } + } From 29278a10d8533471550e1ef35260d98febc25ee9 Mon Sep 17 00:00:00 2001 From: hellozrh <455741807@qq.com> Date: Mon, 16 Jan 2023 15:06:53 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E8=A7=A3=E5=86=B3excel=E8=AF=BB=E5=88=B0?= =?UTF-8?q?=E6=97=B6=E7=A9=BA=E7=99=BD=E8=A1=8CrowHanler=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E7=9A=84=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hutool-poi/src/test/resources/readBySax.xls | Bin 0 -> 26624 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 hutool-poi/src/test/resources/readBySax.xls diff --git a/hutool-poi/src/test/resources/readBySax.xls b/hutool-poi/src/test/resources/readBySax.xls new file mode 100644 index 0000000000000000000000000000000000000000..90411a8bf0bce95e1f9e0fadf46f2617473de2ae GIT binary patch literal 26624 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 XqaGnN--r6l`vjBUnr$9l89x3G-o+~z literal 0 HcmV?d00001 From c9061f388c6f75e9e649f12fb20e778c77470ae8 Mon Sep 17 00:00:00 2001 From: hellozrh <455741807@qq.com> Date: Mon, 16 Jan 2023 15:12:29 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=EF=BC=8C=E4=BF=9D=E8=AF=81=E5=87=86=E7=A1=AE?= =?UTF-8?q?=E6=80=A7=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/hutool/core/collection/CollUtil.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java b/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java index c89186805..9b190c584 100755 --- a/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java @@ -1654,7 +1654,7 @@ public class CollUtil { /** * 集合是否为空。 - * 如果集合中所有元素为null或空白串,也认为此集合为空。 + * 如果集合中所有元素为null或空串,也认为此集合为空。 * @param collection * @return */ @@ -1673,7 +1673,7 @@ public class CollUtil { /** * 集合是否为非空。 - * 集合长度大于0,且所有元素中至少有一个不为null或空白串。 + * 集合长度大于0,且所有元素中至少有一个不为null或空串。 * @param collection * @return */ From e36649fbc8eb22380da3baea7ad1fd0186f2dbae Mon Sep 17 00:00:00 2001 From: hellozrh <455741807@qq.com> Date: Wed, 18 Jan 2023 13:59:22 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E4=BF=AE=E5=A4=8D2003=E7=89=88=E6=9C=ACexc?= =?UTF-8?q?el=E8=AF=BB=E5=8F=96=E6=97=B6processLastCellSheet=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E4=B8=A4=E6=AC=A1=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poi/excel/sax/Excel03SaxReader.java | 10 +++++++--- .../cn/hutool/poi/excel/ExcelUtilTest.java | 2 +- hutool-poi/src/test/resources/readBySax.xls | Bin 26624 -> 26624 bytes 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/hutool-poi/src/main/java/cn/hutool/poi/excel/sax/Excel03SaxReader.java b/hutool-poi/src/main/java/cn/hutool/poi/excel/sax/Excel03SaxReader.java index e9416b9cd..31bbf8aeb 100644 --- a/hutool-poi/src/main/java/cn/hutool/poi/excel/sax/Excel03SaxReader.java +++ b/hutool-poi/src/main/java/cn/hutool/poi/excel/sax/Excel03SaxReader.java @@ -218,7 +218,10 @@ public class Excel03SaxReader implements HSSFListener, ExcelSaxReader(this.rowCellList.size()); } @@ -359,6 +362,7 @@ public class Excel03SaxReader implements HSSFListener, ExcelSaxReader rowCells) { System.out.println(StrUtil.format("sheetIndex={};rowIndex={},rowCells={}",sheetIndex,rowIndex,rowCells)); - assertRowNum.addAndGet(1); } }); }catch (Exception ex){ ex.printStackTrace(); } - //Assert.assertEquals(3, assertRowNum.intValue()); } } From 9ceac4d3cd40c4929d203436893b6d6d5e9d5dc7 Mon Sep 17 00:00:00 2001 From: hellozrh <455741807@qq.com> Date: Wed, 18 Jan 2023 14:35:18 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0assert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/test/java/cn/hutool/poi/excel/ExcelUtilTest.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/hutool-poi/src/test/java/cn/hutool/poi/excel/ExcelUtilTest.java b/hutool-poi/src/test/java/cn/hutool/poi/excel/ExcelUtilTest.java index c274ae1ab..9a3dcf1d4 100644 --- a/hutool-poi/src/test/java/cn/hutool/poi/excel/ExcelUtilTest.java +++ b/hutool-poi/src/test/java/cn/hutool/poi/excel/ExcelUtilTest.java @@ -7,6 +7,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.poi.excel.cell.CellLocation; import cn.hutool.poi.excel.sax.handler.RowHandler; +import org.apache.poi.ss.usermodel.CellStyle; import org.junit.Assert; import org.junit.Test; @@ -75,16 +76,24 @@ public class ExcelUtilTest { @Test public void doAfterAllAnalysedTest() { String path = "readBySax.xls"; + AtomicInteger doAfterAllAnalysedTime = new AtomicInteger(0); try{ ExcelUtil.readBySax(path, -1, new RowHandler() { @Override public void handle(int sheetIndex, long rowIndex, List rowCells) { System.out.println(StrUtil.format("sheetIndex={};rowIndex={},rowCells={}",sheetIndex,rowIndex,rowCells)); } + + @Override + public void doAfterAllAnalysed() { + doAfterAllAnalysedTime.addAndGet(1); + } }); }catch (Exception ex){ ex.printStackTrace(); } + //总共2个sheet页,读取所有sheet时,一共执行doAfterAllAnalysed2次。 + Assert.assertEquals(2, doAfterAllAnalysedTime.intValue()); } }