Commit 05ceff0fd4311367930cadee67c84dbb3f3098f9

Authored by unknown
1 parent 21fd3715
Exists in master

1.tempmodify

src/main/java/com/taover/easyexcel/analysis/ExcelAnalyserImpl.java
... ... @@ -111,6 +111,7 @@ public class ExcelAnalyserImpl implements ExcelAnalyser {
111 111 }
112 112 analysisContext.readWorkbookHolder().setParameterSheetDataList(readSheetList);
113 113 analysisContext.readWorkbookHolder().setReadAll(readAll);
  114 + analysisContext.readWorkbookHolder().setReadJustSelected(false);
114 115 for(ReadSheet item: readSheetList) {
115 116 if(item.getSheetSelected()) {
116 117 analysisContext.readWorkbookHolder().setReadJustSelected(true);
... ...
src/main/java/com/taover/easyexcel/analysis/v07/XlsxSaxAnalyser.java
... ... @@ -197,12 +197,16 @@ public class XlsxSaxAnalyser implements ExcelReadExecutor {
197 197 for (ReadSheet readSheet : sheetList) {
198 198 readSheet = SheetUtils.match(readSheet, xlsxReadContext);
199 199 if (readSheet != null) {
200   - xlsxReadContext.currentSheet(readSheet);
201   - parseXmlSource(sheetMap.get(readSheet.getSheetNo()), new XlsxRowHandler(xlsxReadContext));
202   - // Read comments
203   - readComments(readSheet);
204   - // The last sheet is read
205   - xlsxReadContext.analysisEventProcessor().endSheet(xlsxReadContext);
  200 + try {
  201 + xlsxReadContext.currentSheet(readSheet);
  202 + parseXmlSource(sheetMap.get(readSheet.getSheetNo()), new XlsxRowHandler(xlsxReadContext));
  203 + // Read comments
  204 + readComments(readSheet);
  205 + // The last sheet is read
  206 + xlsxReadContext.analysisEventProcessor().endSheet(xlsxReadContext);
  207 + }catch (Exception e) {
  208 + e.printStackTrace();
  209 + }
206 210 }
207 211 }
208 212 }
... ...
src/main/java/com/taover/easyexcel/analysis/v07/handlers/sax/XlsxRowHandler.java
... ... @@ -23,7 +23,7 @@ import com.taover.easyexcel.context.xlsx.XlsxReadContext;
23 23 * @author jipengfei
24 24 */
25 25 public class XlsxRowHandler extends DefaultHandler {
26   - private static final boolean XLSX_DEBUB_PRINT_INFO = true;
  26 + private static final boolean XLSX_DEBUB_PRINT_INFO = false;
27 27 private XlsxReadContext xlsxReadContext;
28 28 private static final Map<String, XlsxTagHandler> XLSX_CELL_HANDLER_MAP = new HashMap<String, XlsxTagHandler>(32);
29 29  
... ... @@ -62,7 +62,18 @@ public class XlsxRowHandler extends DefaultHandler {
62 62 public void startElement(String uri, String localName, String name, Attributes attributes) throws SAXException {
63 63 if(XLSX_DEBUB_PRINT_INFO) {
64 64 this.printElement("startElement", uri, localName, name, attributes);
65   - }
  65 + }
  66 +
  67 + //whether just read selected sheet
  68 + Boolean readJustSelected = this.xlsxReadContext.readWorkbookHolder().getReadJustSelected();
  69 + if(ExcelXmlConstants.SHEET_VIEW_TAG.equals(name)
  70 + && readJustSelected != null
  71 + && readJustSelected
  72 + && !"1".equals(attributes.getValue("tabSelected"))) {
  73 + //throw new SAXException("not selected sheet, just read selected sheet");
  74 + //return;
  75 + }
  76 +
66 77 XlsxTagHandler handler = XLSX_CELL_HANDLER_MAP.get(name);
67 78 if (handler == null
68 79 || !handler.support(xlsxReadContext)
... ...
src/main/java/com/taover/easyexcel/constant/ExcelXmlConstants.java
... ... @@ -4,6 +4,9 @@ package com.taover.easyexcel.constant;
4 4 * @author jipengfei
5 5 */
6 6 public class ExcelXmlConstants {
  7 + public static final String SHEET_VIEW_TAG = "sheetView";
  8 + public static final String X_SHEET_VIEW_TAG = "x:sheetView";
  9 +
7 10 public static final String DIMENSION_TAG = "dimension";
8 11 public static final String ROW_TAG = "row";
9 12 public static final String CELL_FORMULA_TAG = "f";
... ...
src/test/java/com/taover/easyexcel/test/demo/read/ReadTest.java
... ... @@ -253,7 +253,7 @@ public class ReadTest {
253 253 // }
254 254  
255 255 // 这里 也可以不指定class,返回一个list,然后读取第一个sheet 同步读取会自动finish
256   - List<Map<Integer, String>> listMap = EasyExcel.read("D://demo.xlsx").sheet().doReadSync();
  256 + List<Map<Integer, String>> listMap = EasyExcel.read("D://demo.xlsx").sheet(true).doReadSync();
257 257 for (Map<Integer, String> data : listMap) {
258 258 // 返回每条数据的键值对 表示所在的列 和所在列的值
259 259 LOGGER.info("读取到数据:{}", JSON.toJSONString(data));
... ...