diff --git a/src/main/java/com/taover/easyexcel/analysis/ExcelAnalyserImpl.java b/src/main/java/com/taover/easyexcel/analysis/ExcelAnalyserImpl.java index f1f2253..f74c905 100644 --- a/src/main/java/com/taover/easyexcel/analysis/ExcelAnalyserImpl.java +++ b/src/main/java/com/taover/easyexcel/analysis/ExcelAnalyserImpl.java @@ -111,6 +111,7 @@ public class ExcelAnalyserImpl implements ExcelAnalyser { } analysisContext.readWorkbookHolder().setParameterSheetDataList(readSheetList); analysisContext.readWorkbookHolder().setReadAll(readAll); + analysisContext.readWorkbookHolder().setReadJustSelected(false); for(ReadSheet item: readSheetList) { if(item.getSheetSelected()) { analysisContext.readWorkbookHolder().setReadJustSelected(true); diff --git a/src/main/java/com/taover/easyexcel/analysis/v07/XlsxSaxAnalyser.java b/src/main/java/com/taover/easyexcel/analysis/v07/XlsxSaxAnalyser.java index 7cbdc62..5ec6263 100644 --- a/src/main/java/com/taover/easyexcel/analysis/v07/XlsxSaxAnalyser.java +++ b/src/main/java/com/taover/easyexcel/analysis/v07/XlsxSaxAnalyser.java @@ -197,12 +197,16 @@ public class XlsxSaxAnalyser implements ExcelReadExecutor { for (ReadSheet readSheet : sheetList) { readSheet = SheetUtils.match(readSheet, xlsxReadContext); if (readSheet != null) { - xlsxReadContext.currentSheet(readSheet); - parseXmlSource(sheetMap.get(readSheet.getSheetNo()), new XlsxRowHandler(xlsxReadContext)); - // Read comments - readComments(readSheet); - // The last sheet is read - xlsxReadContext.analysisEventProcessor().endSheet(xlsxReadContext); + try { + xlsxReadContext.currentSheet(readSheet); + parseXmlSource(sheetMap.get(readSheet.getSheetNo()), new XlsxRowHandler(xlsxReadContext)); + // Read comments + readComments(readSheet); + // The last sheet is read + xlsxReadContext.analysisEventProcessor().endSheet(xlsxReadContext); + }catch (Exception e) { + e.printStackTrace(); + } } } } diff --git a/src/main/java/com/taover/easyexcel/analysis/v07/handlers/sax/XlsxRowHandler.java b/src/main/java/com/taover/easyexcel/analysis/v07/handlers/sax/XlsxRowHandler.java index a5051f2..b9ac4e8 100644 --- a/src/main/java/com/taover/easyexcel/analysis/v07/handlers/sax/XlsxRowHandler.java +++ b/src/main/java/com/taover/easyexcel/analysis/v07/handlers/sax/XlsxRowHandler.java @@ -23,7 +23,7 @@ import com.taover.easyexcel.context.xlsx.XlsxReadContext; * @author jipengfei */ public class XlsxRowHandler extends DefaultHandler { - private static final boolean XLSX_DEBUB_PRINT_INFO = true; + private static final boolean XLSX_DEBUB_PRINT_INFO = false; private XlsxReadContext xlsxReadContext; private static final Map XLSX_CELL_HANDLER_MAP = new HashMap(32); @@ -62,7 +62,18 @@ public class XlsxRowHandler extends DefaultHandler { public void startElement(String uri, String localName, String name, Attributes attributes) throws SAXException { if(XLSX_DEBUB_PRINT_INFO) { this.printElement("startElement", uri, localName, name, attributes); - } + } + + //whether just read selected sheet + Boolean readJustSelected = this.xlsxReadContext.readWorkbookHolder().getReadJustSelected(); + if(ExcelXmlConstants.SHEET_VIEW_TAG.equals(name) + && readJustSelected != null + && readJustSelected + && !"1".equals(attributes.getValue("tabSelected"))) { + //throw new SAXException("not selected sheet, just read selected sheet"); + //return; + } + XlsxTagHandler handler = XLSX_CELL_HANDLER_MAP.get(name); if (handler == null || !handler.support(xlsxReadContext) diff --git a/src/main/java/com/taover/easyexcel/constant/ExcelXmlConstants.java b/src/main/java/com/taover/easyexcel/constant/ExcelXmlConstants.java index e5b1d39..e2f8615 100644 --- a/src/main/java/com/taover/easyexcel/constant/ExcelXmlConstants.java +++ b/src/main/java/com/taover/easyexcel/constant/ExcelXmlConstants.java @@ -4,6 +4,9 @@ package com.taover.easyexcel.constant; * @author jipengfei */ public class ExcelXmlConstants { + public static final String SHEET_VIEW_TAG = "sheetView"; + public static final String X_SHEET_VIEW_TAG = "x:sheetView"; + public static final String DIMENSION_TAG = "dimension"; public static final String ROW_TAG = "row"; public static final String CELL_FORMULA_TAG = "f"; diff --git a/src/test/java/com/taover/easyexcel/test/demo/read/ReadTest.java b/src/test/java/com/taover/easyexcel/test/demo/read/ReadTest.java index 5d0dcec..dabdce4 100644 --- a/src/test/java/com/taover/easyexcel/test/demo/read/ReadTest.java +++ b/src/test/java/com/taover/easyexcel/test/demo/read/ReadTest.java @@ -253,7 +253,7 @@ public class ReadTest { // } // 这里 也可以不指定class,返回一个list,然后读取第一个sheet 同步读取会自动finish - List> listMap = EasyExcel.read("D://demo.xlsx").sheet().doReadSync(); + List> listMap = EasyExcel.read("D://demo.xlsx").sheet(true).doReadSync(); for (Map data : listMap) { // 返回每条数据的键值对 表示所在的列 和所在列的值 LOGGER.info("读取到数据:{}", JSON.toJSONString(data)); -- libgit2 0.21.2