add method

This commit is contained in:
Looly 2021-11-26 21:49:01 +08:00
parent 95854cddb1
commit 06cc38734c
3 changed files with 25 additions and 1 deletions

View File

@ -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

View File

@ -202,7 +202,7 @@ public class Excel07SaxReader implements ExcelSaxReader<Excel07SaxReader> {
}
// sheetIndex需转换为rid
final SheetRidReader ridReader = new SheetRidReader().read(xssfReader);
final SheetRidReader ridReader = SheetRidReader.parse(xssfReader);
if (StrUtil.startWithIgnoreCase(idOrRidOrSheetName, SHEET_NAME_PREFIX)) {
// name:开头的被认为是sheet名称直接处理

View File

@ -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<String> 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)) {