From 06cc38734ca9fe65a102f7f35b22b6e8795dcc28 Mon Sep 17 00:00:00 2001 From: Looly Date: Fri, 26 Nov 2021 21:49:01 +0800 Subject: [PATCH] add method --- CHANGELOG.md | 1 + .../poi/excel/sax/Excel07SaxReader.java | 2 +- .../hutool/poi/excel/sax/SheetRidReader.java | 23 +++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4887c7fdf..f7f929b2b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ * 【core 】 ReflectUtil.getMethod排除桥接方法(pr#1965@Github) * 【http 】 completeFileNameFromHeader在使用path为路径时,自动解码(issue#I4K0FS@Gitee) * 【core 】 CopyOptions增加override配置(issue#I4JQ1N@Gitee) +* 【poi 】 SheetRidReader可以获取所有sheet名(issue#I4JA3M@Gitee) * ### 🐞Bug修复 * 【core 】 修复FileResource构造fileName参数无效问题(issue#1942@Github) diff --git a/hutool-poi/src/main/java/cn/hutool/poi/excel/sax/Excel07SaxReader.java b/hutool-poi/src/main/java/cn/hutool/poi/excel/sax/Excel07SaxReader.java index e742e8fa1..ee5c5710a 100644 --- a/hutool-poi/src/main/java/cn/hutool/poi/excel/sax/Excel07SaxReader.java +++ b/hutool-poi/src/main/java/cn/hutool/poi/excel/sax/Excel07SaxReader.java @@ -202,7 +202,7 @@ public class Excel07SaxReader implements ExcelSaxReader { } // sheetIndex需转换为rid - final SheetRidReader ridReader = new SheetRidReader().read(xssfReader); + final SheetRidReader ridReader = SheetRidReader.parse(xssfReader); if (StrUtil.startWithIgnoreCase(idOrRidOrSheetName, SHEET_NAME_PREFIX)) { // name:开头的被认为是sheet名称直接处理 diff --git a/hutool-poi/src/main/java/cn/hutool/poi/excel/sax/SheetRidReader.java b/hutool-poi/src/main/java/cn/hutool/poi/excel/sax/SheetRidReader.java index 76e295f8b..9cfc772b4 100644 --- a/hutool-poi/src/main/java/cn/hutool/poi/excel/sax/SheetRidReader.java +++ b/hutool-poi/src/main/java/cn/hutool/poi/excel/sax/SheetRidReader.java @@ -1,6 +1,7 @@ package cn.hutool.poi.excel.sax; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.ListUtil; import cn.hutool.core.io.IORuntimeException; import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.StrUtil; @@ -13,6 +14,7 @@ import org.xml.sax.helpers.DefaultHandler; import java.io.IOException; import java.io.InputStream; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; /** @@ -32,6 +34,17 @@ import java.util.Map; */ public class SheetRidReader extends DefaultHandler { + /** + * 从{@link XSSFReader}中解析sheet名、sheet id等相关信息 + * + * @param reader {@link XSSFReader} + * @return SheetRidReader + * @since 5.7.17 + */ + public static SheetRidReader parse(XSSFReader reader) { + return new SheetRidReader().read(reader); + } + private final static String TAG_NAME = "sheet"; private final static String RID_ATTR = "r:id"; private final static String SHEET_ID_ATTR = "sheetId"; @@ -137,6 +150,16 @@ public class SheetRidReader extends DefaultHandler { return null; } + /** + * 获取所有sheet名称 + * + * @return sheet名称 + * @since 5.7.17 + */ + public List getSheetNames() { + return ListUtil.toList(this.NAME_RID_MAP.keySet()); + } + @Override public void startElement(String uri, String localName, String qName, Attributes attributes) { if (TAG_NAME.equalsIgnoreCase(localName)) {