From 6ed4189bf079b6ab2787c2ca1efbfd030a21c753 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 11 Aug 2020 15:18:29 +0800 Subject: [PATCH] support hidden sheet --- src/main/java/com/taover/easyexcel/analysis/v03/XlsSaxAnalyser.java | 58 ++++++---------------------------------------------------- src/main/java/com/taover/easyexcel/analysis/v03/handlers/AbstractXlsRecordHandler.java | 20 +++++++++++++++++++- src/main/java/com/taover/easyexcel/analysis/v03/handlers/BofRecordHandler.java | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- src/main/java/com/taover/easyexcel/analysis/v03/handlers/RowRecordHandler.java | 26 ++++++++++++++++++++++++++ src/main/java/com/taover/easyexcel/analysis/v03/handlers/WindowOneRecordHandler.java | 23 +++++++++++++++++++++++ src/main/java/com/taover/easyexcel/analysis/v07/handlers/sax/XlsxRowHandler.java | 6 +++--- src/main/java/com/taover/easyexcel/analysis/v07/workbook/WorkbookAnalyserImpl.java | 25 ++++++++++++++++++------- src/main/java/com/taover/easyexcel/read/builder/ExcelReaderBuilder.java | 2 +- src/main/java/com/taover/easyexcel/read/metadata/holder/xls/XlsReadSheetHolder.java | 13 +++++++++++++ src/main/java/com/taover/easyexcel/read/metadata/holder/xls/XlsReadWorkbookHolder.java | 19 +++++++++++++++++++ src/main/java/com/taover/easyexcel/util/SheetUtils.java | 19 +------------------ src/test/java/com/taover/easyexcel/test/demo/read/ReadTest.java | 15 ++++++++------- 12 files changed, 200 insertions(+), 92 deletions(-) create mode 100644 src/main/java/com/taover/easyexcel/analysis/v03/handlers/RowRecordHandler.java create mode 100644 src/main/java/com/taover/easyexcel/analysis/v03/handlers/WindowOneRecordHandler.java diff --git a/src/main/java/com/taover/easyexcel/analysis/v03/XlsSaxAnalyser.java b/src/main/java/com/taover/easyexcel/analysis/v03/XlsSaxAnalyser.java index f5bede0..df325b3 100644 --- a/src/main/java/com/taover/easyexcel/analysis/v03/XlsSaxAnalyser.java +++ b/src/main/java/com/taover/easyexcel/analysis/v03/XlsSaxAnalyser.java @@ -1,7 +1,6 @@ package com.taover.easyexcel.analysis.v03; import java.io.IOException; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -54,9 +53,11 @@ import com.taover.easyexcel.analysis.v03.handlers.NoteRecordHandler; import com.taover.easyexcel.analysis.v03.handlers.NumberRecordHandler; import com.taover.easyexcel.analysis.v03.handlers.ObjRecordHandler; import com.taover.easyexcel.analysis.v03.handlers.RkRecordHandler; +import com.taover.easyexcel.analysis.v03.handlers.RowRecordHandler; import com.taover.easyexcel.analysis.v03.handlers.SstRecordHandler; import com.taover.easyexcel.analysis.v03.handlers.StringRecordHandler; import com.taover.easyexcel.analysis.v03.handlers.TextObjectRecordHandler; +import com.taover.easyexcel.analysis.v03.handlers.WindowOneRecordHandler; import com.taover.easyexcel.context.xls.XlsReadContext; import com.taover.easyexcel.exception.ExcelAnalysisException; import com.taover.easyexcel.exception.ExcelAnalysisStopException; @@ -83,9 +84,6 @@ public class XlsSaxAnalyser implements HSSFListener, ExcelReadExecutor { private static final short DUMMY_RECORD_SID = -1; private XlsReadContext xlsReadContext; private static final Map XLS_RECORD_HANDLER_MAP = new HashMap(32); - List skipCellRowIndexList = new ArrayList(); - private Integer activeSheetIndex = null; - private int currSheetIndex = -1; static { XLS_RECORD_HANDLER_MAP.put(BlankRecord.sid, new BlankRecordHandler()); @@ -107,6 +105,8 @@ public class XlsSaxAnalyser implements HSSFListener, ExcelReadExecutor { XLS_RECORD_HANDLER_MAP.put(SSTRecord.sid, new SstRecordHandler()); XLS_RECORD_HANDLER_MAP.put(StringRecord.sid, new StringRecordHandler()); XLS_RECORD_HANDLER_MAP.put(TextObjectRecord.sid, new TextObjectRecordHandler()); + XLS_RECORD_HANDLER_MAP.put(WindowOneRecord.sid, new WindowOneRecordHandler()); + XLS_RECORD_HANDLER_MAP.put(RowRecord.sid, new RowRecordHandler()); } public XlsSaxAnalyser(XlsReadContext xlsReadContext) { @@ -139,6 +139,7 @@ public class XlsSaxAnalyser implements HSSFListener, ExcelReadExecutor { HSSFEventFactory factory = new HSSFEventFactory(); HSSFRequest request = new HSSFRequest(); request.addListenerForAllRecords(xlsReadWorkbookHolder.getFormatTrackingHSSFListener()); + try { factory.processWorkbookEvents(request, xlsReadWorkbookHolder.getPoifsFileSystem()); } catch (IOException e) { @@ -148,22 +149,11 @@ public class XlsSaxAnalyser implements HSSFListener, ExcelReadExecutor { @Override public void processRecord(Record record) { - System.out.println(record); - - //flush global data - this.initGlobalXlsData(xlsReadContext, record); - - //check whether skip - if(this.needSkip(xlsReadContext, record)) { - return; - } - XlsRecordHandler handler = XLS_RECORD_HANDLER_MAP.get(record.getSid()); if (handler == null) { return; } - boolean ignoreRecord = (handler instanceof IgnorableXlsRecordHandler) - && xlsReadContext.xlsReadSheetHolder() != null && xlsReadContext.xlsReadWorkbookHolder().getIgnoreRecord(); + boolean ignoreRecord = (handler instanceof IgnorableXlsRecordHandler) && xlsReadContext.xlsReadWorkbookHolder().getIgnoreRecord(); if (ignoreRecord) { // No need to read the current sheet return; @@ -173,40 +163,4 @@ public class XlsSaxAnalyser implements HSSFListener, ExcelReadExecutor { } handler.processRecord(xlsReadContext, record); } - - private void initGlobalXlsData(XlsReadContext xlsReadContext2, Record record) { - if(record.getSid() == EOFRecord.sid) { - this.skipCellRowIndexList.clear(); - ++this.currSheetIndex; - } else if(record.getSid() == WindowOneRecord.sid) { - WindowOneRecord window = (WindowOneRecord)record; - this.activeSheetIndex = window.getActiveSheetIndex(); - } - } - - private boolean needSkip(XlsReadContext xlsReadContext, Record record) { - if(record.getSid() == RowRecord.sid) { - RowRecord rowRec = (RowRecord) record; - Boolean readHiddenRow = xlsReadContext.xlsReadWorkbookHolder().getReadHiddenRow(); - if(readHiddenRow != null - && !readHiddenRow - && rowRec.getZeroHeight()) { - skipCellRowIndexList.add(rowRec.getRowNumber()); - return true; - } - }else if(record instanceof CellRecord) { - CellRecord cellRec = (CellRecord)record; - Boolean justReadActiveSheet = xlsReadContext.xlsReadWorkbookHolder().getReadJustSelected(); - if(justReadActiveSheet != null - && justReadActiveSheet - && this.activeSheetIndex != null - && this.currSheetIndex != this.activeSheetIndex) { - return true; - }else if(skipCellRowIndexList.contains(cellRec.getRow())) { - return true; - } - } - - return false; - } } diff --git a/src/main/java/com/taover/easyexcel/analysis/v03/handlers/AbstractXlsRecordHandler.java b/src/main/java/com/taover/easyexcel/analysis/v03/handlers/AbstractXlsRecordHandler.java index c4bd07e..3da99fb 100644 --- a/src/main/java/com/taover/easyexcel/analysis/v03/handlers/AbstractXlsRecordHandler.java +++ b/src/main/java/com/taover/easyexcel/analysis/v03/handlers/AbstractXlsRecordHandler.java @@ -1,5 +1,6 @@ package com.taover.easyexcel.analysis.v03.handlers; +import org.apache.poi.hssf.record.CellRecord; import org.apache.poi.hssf.record.Record; import com.taover.easyexcel.analysis.v03.XlsRecordHandler; @@ -13,6 +14,23 @@ import com.taover.easyexcel.context.xls.XlsReadContext; public abstract class AbstractXlsRecordHandler implements XlsRecordHandler { @Override public boolean support(XlsReadContext xlsReadContext, Record record) { - return true; + if(record instanceof CellRecord) { + Boolean readHiddenRow = xlsReadContext.xlsReadWorkbookHolder().getReadHiddenRow(); + Boolean justReadActiveSheet = xlsReadContext.xlsReadWorkbookHolder().getReadJustSelected(); + if(readHiddenRow == null) { + readHiddenRow = true; + } + if(justReadActiveSheet == null) { + justReadActiveSheet = false; + } + CellRecord cellRec = (CellRecord)record; + if(xlsReadContext.xlsReadSheetHolder() == null) { + return false; + } + if(!readHiddenRow && xlsReadContext.xlsReadSheetHolder().getHiddenRowIndexList().contains(cellRec.getRow())) { + return false; + } + } + return true; } } diff --git a/src/main/java/com/taover/easyexcel/analysis/v03/handlers/BofRecordHandler.java b/src/main/java/com/taover/easyexcel/analysis/v03/handlers/BofRecordHandler.java index 943f121..9d54edd 100644 --- a/src/main/java/com/taover/easyexcel/analysis/v03/handlers/BofRecordHandler.java +++ b/src/main/java/com/taover/easyexcel/analysis/v03/handlers/BofRecordHandler.java @@ -10,8 +10,10 @@ import org.apache.poi.hssf.record.Record; import com.taover.easyexcel.context.xls.XlsReadContext; import com.taover.easyexcel.exception.ExcelAnalysisStopException; import com.taover.easyexcel.read.metadata.ReadSheet; +import com.taover.easyexcel.read.metadata.holder.ReadWorkbookHolder; import com.taover.easyexcel.read.metadata.holder.xls.XlsReadWorkbookHolder; import com.taover.easyexcel.util.SheetUtils; +import com.taover.easyexcel.util.StringUtils; /** * Record handler @@ -42,7 +44,7 @@ public class BofRecordHandler extends AbstractXlsRecordHandler { ReadSheet actualReadSheet = xlsReadWorkbookHolder.getActualSheetDataList().get(readSheetIndex); assert actualReadSheet != null : "Can't find the sheet."; // Copy the parameter to the current sheet - ReadSheet readSheet = SheetUtils.match(actualReadSheet, xlsReadContext); + ReadSheet readSheet = this.filterReadSheet(actualReadSheet, xlsReadContext); if (readSheet != null) { xlsReadContext.currentSheet(readSheet); xlsReadContext.xlsReadWorkbookHolder().setIgnoreRecord(Boolean.FALSE); @@ -53,7 +55,59 @@ public class BofRecordHandler extends AbstractXlsRecordHandler { xlsReadWorkbookHolder.setReadSheetIndex(xlsReadWorkbookHolder.getReadSheetIndex() + 1); } - private void initReadSheetDataList(XlsReadWorkbookHolder xlsReadWorkbookHolder) { + private ReadSheet filterReadSheet(ReadSheet readSheet, XlsReadContext analysisContext) { + ReadWorkbookHolder readWorkbookHolder = analysisContext.readWorkbookHolder(); + //hidden sheet not read + if(analysisContext.xlsReadWorkbookHolder().getHiddenBoundSheetIndexList().contains(readSheet.getSheetNo())) { + return null; + } + + //read all and not read just selected + if (readWorkbookHolder.getReadAll()) { + return readSheet; + } + + //read selected sheet + if(readWorkbookHolder.getReadJustSelected()) { + if(readSheet.getSheetNo() == analysisContext.xlsReadWorkbookHolder().getActiveSheetIndex()) { + return readSheet; + }else { + return null; + } + } + + //read by sheet no + for (ReadSheet parameterReadSheet : readWorkbookHolder.getParameterSheetDataList()) { + //remove null or hidden sheet + if (parameterReadSheet == null) { + continue; + } + if (parameterReadSheet.getSheetNo() == null && parameterReadSheet.getSheetName() == null) { + parameterReadSheet.setSheetNo(0); + } + boolean match = (parameterReadSheet.getSheetNo() != null + && parameterReadSheet.getSheetNo().equals(readSheet.getSheetNo())); + if (!match) { + String parameterSheetName = parameterReadSheet.getSheetName(); + if (!StringUtils.isEmpty(parameterSheetName)) { + boolean autoTrim = (parameterReadSheet.getAutoTrim() != null && parameterReadSheet.getAutoTrim()) + || (parameterReadSheet.getAutoTrim() == null + && analysisContext.readWorkbookHolder().getGlobalConfiguration().getAutoTrim()); + if (autoTrim) { + parameterSheetName = parameterSheetName.trim(); + } + match = parameterSheetName.equals(readSheet.getSheetName()); + } + } + if (match) { + readSheet.copyBasicParameter(parameterReadSheet); + return readSheet; + } + } + return null; + } + + private void initReadSheetDataList(XlsReadWorkbookHolder xlsReadWorkbookHolder) { if (xlsReadWorkbookHolder.getActualSheetDataList() != null) { return; } @@ -63,7 +117,13 @@ public class BofRecordHandler extends AbstractXlsRecordHandler { for (int i = 0; i < boundSheetRecords.length; i++) { BoundSheetRecord boundSheetRecord = boundSheetRecords[i]; ReadSheet readSheet = new ReadSheet(i, boundSheetRecord.getSheetname()); - readSheetDataList.add(readSheet); + if(boundSheetRecord.isHidden() || boundSheetRecord.isVeryHidden()) { + readSheet.setSheetHidden(true); + xlsReadWorkbookHolder.getHiddenBoundSheetIndexList().add(i); + }else { + readSheet.setSheetHidden(false); + } + readSheetDataList.add(readSheet); } xlsReadWorkbookHolder.setActualSheetDataList(readSheetDataList); // Just need to get the list of sheets diff --git a/src/main/java/com/taover/easyexcel/analysis/v03/handlers/RowRecordHandler.java b/src/main/java/com/taover/easyexcel/analysis/v03/handlers/RowRecordHandler.java new file mode 100644 index 0000000..d7a4014 --- /dev/null +++ b/src/main/java/com/taover/easyexcel/analysis/v03/handlers/RowRecordHandler.java @@ -0,0 +1,26 @@ +package com.taover.easyexcel.analysis.v03.handlers; + +import org.apache.poi.hssf.record.Record; +import org.apache.poi.hssf.record.RowRecord; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.taover.easyexcel.context.xls.XlsReadContext; + +/** + * Record handler + * + * @author Dan Zheng + */ +public class RowRecordHandler extends AbstractXlsRecordHandler { + private static final Logger LOGGER = LoggerFactory.getLogger(RowRecordHandler.class); + + @Override + public void processRecord(XlsReadContext xlsReadContext, Record record) { + RowRecord rowRecord = (RowRecord)record; + if(rowRecord.getZeroHeight() && + xlsReadContext.xlsReadSheetHolder() != null) { + xlsReadContext.xlsReadSheetHolder().getHiddenRowIndexList().add(rowRecord.getRowNumber()); + } + } +} diff --git a/src/main/java/com/taover/easyexcel/analysis/v03/handlers/WindowOneRecordHandler.java b/src/main/java/com/taover/easyexcel/analysis/v03/handlers/WindowOneRecordHandler.java new file mode 100644 index 0000000..001adfb --- /dev/null +++ b/src/main/java/com/taover/easyexcel/analysis/v03/handlers/WindowOneRecordHandler.java @@ -0,0 +1,23 @@ +package com.taover.easyexcel.analysis.v03.handlers; + +import org.apache.poi.hssf.record.Record; +import org.apache.poi.hssf.record.WindowOneRecord; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.taover.easyexcel.context.xls.XlsReadContext; + +/** + * Record handler + * + * @author Dan Zheng + */ +public class WindowOneRecordHandler extends AbstractXlsRecordHandler { + private static final Logger LOGGER = LoggerFactory.getLogger(WindowOneRecordHandler.class); + + @Override + public void processRecord(XlsReadContext xlsReadContext, Record record) { + WindowOneRecord windowOne = (WindowOneRecord)record; + xlsReadContext.xlsReadWorkbookHolder().setActiveSheetIndex(windowOne.getActiveSheetIndex()); + } +} 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 cde1ba8..34b8c7a 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 @@ -53,9 +53,9 @@ public class XlsxRowHandler extends DefaultHandler { RowTagHandler rowTagHandler = new RowTagHandler(); XLSX_CELL_HANDLER_MAP.put(ExcelXmlConstants.ROW_TAG, rowTagHandler); XLSX_CELL_HANDLER_MAP.put(ExcelXmlConstants.X_ROW_TAG, rowTagHandler); - SheetViewHandler sheetViewHandler = new SheetViewHandler(); - XLSX_CELL_HANDLER_MAP.put(ExcelXmlConstants.SHEET_VIEW_TAG, sheetViewHandler); - XLSX_CELL_HANDLER_MAP.put(ExcelXmlConstants.X_SHEET_VIEW_TAG, sheetViewHandler); +// SheetViewHandler sheetViewHandler = new SheetViewHandler(); +// XLSX_CELL_HANDLER_MAP.put(ExcelXmlConstants.SHEET_VIEW_TAG, sheetViewHandler); +// XLSX_CELL_HANDLER_MAP.put(ExcelXmlConstants.X_SHEET_VIEW_TAG, sheetViewHandler); } public XlsxRowHandler(XlsxReadContext xlsxReadContext) { diff --git a/src/main/java/com/taover/easyexcel/analysis/v07/workbook/WorkbookAnalyserImpl.java b/src/main/java/com/taover/easyexcel/analysis/v07/workbook/WorkbookAnalyserImpl.java index 562a7ec..15d6038 100644 --- a/src/main/java/com/taover/easyexcel/analysis/v07/workbook/WorkbookAnalyserImpl.java +++ b/src/main/java/com/taover/easyexcel/analysis/v07/workbook/WorkbookAnalyserImpl.java @@ -30,9 +30,14 @@ public class WorkbookAnalyserImpl implements WorkbookAnalyser { public WorkbookAnalyserImpl(InputStream workbookInputStream) throws SAXException, IOException, ParserConfigurationException { Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(workbookInputStream); NodeList nList = doc.getElementsByTagName(TAG_NAME_WORKBOOK); - Node workbookNode = nList.item(0); - this.initSheetList(this.getSheetsDoc(workbookNode.getOwnerDocument())); - this.initActiveTabIndex(this.getWorkbookViewDoc(workbookNode.getOwnerDocument())); + Node workbookNode = nList.item(0); + if(workbookNode != null) { + this.initSheetList(this.getSheetsDoc(workbookNode.getOwnerDocument())); + this.initActiveTabIndex(this.getWorkbookViewDoc(workbookNode.getOwnerDocument())); + }else { + this.activeTabIndex = 0; + this.sheetList = new ArrayList(); + } } private void initSheetList(List sheetsDoc) { @@ -81,10 +86,13 @@ public class WorkbookAnalyserImpl implements WorkbookAnalyser { } private List getSheetsDoc(Document workbook) { + List result = new ArrayList(); + if(workbook == null) { + return result; + } NodeList sheetsNodeList = workbook.getElementsByTagName(TAG_NAME_SHEETS); Node sheetsNode = sheetsNodeList.item(0); - NodeList sheetNodeList = sheetsNode.getChildNodes(); - List result = new ArrayList(); + NodeList sheetNodeList = sheetsNode.getChildNodes(); for(int i=0; i getWorkbookViewDoc(Document workbook) { + List result = new ArrayList(); + if(workbook == null) { + return result; + } NodeList sheetsNodeList = workbook.getElementsByTagName(TAG_NAME_BOOKVIEWS); Node sheetsNode = sheetsNodeList.item(0); - NodeList sheetNodeList = sheetsNode.getChildNodes(); - List result = new ArrayList(); + NodeList sheetNodeList = sheetsNode.getChildNodes(); for(int i=0; i List doReadAllSync() { + public List doReadAllSync() { SyncReadListener syncReadListener = new SyncReadListener(); registerReadListener(syncReadListener); ExcelReader excelReader = build(); diff --git a/src/main/java/com/taover/easyexcel/read/metadata/holder/xls/XlsReadSheetHolder.java b/src/main/java/com/taover/easyexcel/read/metadata/holder/xls/XlsReadSheetHolder.java index a0a8ad2..d6fc2a6 100644 --- a/src/main/java/com/taover/easyexcel/read/metadata/holder/xls/XlsReadSheetHolder.java +++ b/src/main/java/com/taover/easyexcel/read/metadata/holder/xls/XlsReadSheetHolder.java @@ -1,6 +1,8 @@ package com.taover.easyexcel.read.metadata.holder.xls; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import com.taover.easyexcel.enums.RowTypeEnum; @@ -26,11 +28,14 @@ public class XlsReadSheetHolder extends ReadSheetHolder { * Temp object index. */ private Map objectCacheMap; + + List hiddenRowIndexList; public XlsReadSheetHolder(ReadSheet readSheet, ReadWorkbookHolder readWorkbookHolder) { super(readSheet, readWorkbookHolder); tempRowType = RowTypeEnum.EMPTY; objectCacheMap = new HashMap(16); + hiddenRowIndexList = new ArrayList(16); } public RowTypeEnum getTempRowType() { @@ -57,4 +62,12 @@ public class XlsReadSheetHolder extends ReadSheetHolder { public void setObjectCacheMap(Map objectCacheMap) { this.objectCacheMap = objectCacheMap; } + + public List getHiddenRowIndexList() { + return hiddenRowIndexList; + } + + public void setHiddenRowIndexList(List hiddenRowIndexList) { + this.hiddenRowIndexList = hiddenRowIndexList; + } } diff --git a/src/main/java/com/taover/easyexcel/read/metadata/holder/xls/XlsReadWorkbookHolder.java b/src/main/java/com/taover/easyexcel/read/metadata/holder/xls/XlsReadWorkbookHolder.java index db8fbc7..b95a11c 100644 --- a/src/main/java/com/taover/easyexcel/read/metadata/holder/xls/XlsReadWorkbookHolder.java +++ b/src/main/java/com/taover/easyexcel/read/metadata/holder/xls/XlsReadWorkbookHolder.java @@ -46,6 +46,9 @@ public class XlsReadWorkbookHolder extends ReadWorkbookHolder { * Ignore record. */ private Boolean ignoreRecord; + + private int activeSheetIndex = 0; + private List hiddenBoundSheetIndexList = new ArrayList(); public XlsReadWorkbookHolder(ReadWorkbook readWorkbook) { super(readWorkbook); @@ -113,4 +116,20 @@ public class XlsReadWorkbookHolder extends ReadWorkbookHolder { public void setIgnoreRecord(Boolean ignoreRecord) { this.ignoreRecord = ignoreRecord; } + + public int getActiveSheetIndex() { + return activeSheetIndex; + } + + public void setActiveSheetIndex(int activeSheetIndex) { + this.activeSheetIndex = activeSheetIndex; + } + + public List getHiddenBoundSheetIndexList() { + return hiddenBoundSheetIndexList; + } + + public void setHiddenBoundSheetIndexList(List hiddenBoundSheetIndexList) { + this.hiddenBoundSheetIndexList = hiddenBoundSheetIndexList; + } } diff --git a/src/main/java/com/taover/easyexcel/util/SheetUtils.java b/src/main/java/com/taover/easyexcel/util/SheetUtils.java index 15aed67..de92588 100644 --- a/src/main/java/com/taover/easyexcel/util/SheetUtils.java +++ b/src/main/java/com/taover/easyexcel/util/SheetUtils.java @@ -28,27 +28,10 @@ public class SheetUtils { public static ReadSheet match(ReadSheet readSheet, AnalysisContext analysisContext) { ReadWorkbookHolder readWorkbookHolder = analysisContext.readWorkbookHolder(); //read all and not read just selected - if (readWorkbookHolder.getReadAll()) { + if (readWorkbookHolder.getReadAll() || readWorkbookHolder.getReadJustSelected()) { return readSheet; } - if(readWorkbookHolder.getParameterSheetDataList() == null) { - return null; - } - - //read just selected - if(readWorkbookHolder.getReadJustSelected()) { - for (ReadSheet parameterReadSheet : readWorkbookHolder.getParameterSheetDataList()) { - if (parameterReadSheet == null) { - continue; - } - if(parameterReadSheet.getSheetSelected() != null && parameterReadSheet.getSheetSelected()) { - readSheet.copyBasicParameter(parameterReadSheet); - return readSheet; - } - } - } - //read by sheet no for (ReadSheet parameterReadSheet : readWorkbookHolder.getParameterSheetDataList()) { //remove null or hidden sheet 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 626cb67..5edf08c 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 @@ -252,7 +252,7 @@ public class ReadTest { // } // 这里 也可以不指定class,返回一个list,然后读取第一个sheet 同步读取会自动finish - List> listMap = EasyExcel.read("D://debug//hiddensheet//demo.xls").headRowNumber(0).readHiddenRow(false).doReadSelectedSync(); + List> listMap = EasyExcel.read("D://debug//hiddensheet//demo.xlsx").headRowNumber(0).readHiddenRow(false).doReadSelectedSync(); for (Map data : listMap) { // 返回每条数据的键值对 表示所在的列 和所在列的值 LOGGER.info("读取到数据:{}", JSON.toJSONString(data)); @@ -274,17 +274,18 @@ public class ReadTest { } public void readTestSynchronousRead() { - String dirStr = "D://debug//suffixwrong//"; + String dirStr = "D:\\debug\\readtest\\"; File dDir = new File(dirStr); String[] sonFileNameArr = dDir.list(); for(String item: sonFileNameArr) { try { LOGGER.info("======文件名称:"+item+"======"); - List> listMap = EasyExcel.read(dirStr+item).headRowNumber(0).readHiddenRow(false).doReadSelectedSync(); - for (Map data : listMap) { - // 返回每条数据的键值对 表示所在的列 和所在列的值 - LOGGER.info(">{}", JSON.toJSONString(data)); - } + Map>> listMap = EasyExcel.read(dirStr+item).headRowNumber(0).readHiddenRow(false).doReadAllSyncForMap(); +// for (Map data : listMap) { +// // 返回每条数据的键值对 表示所在的列 和所在列的值 +// //LOGGER.info(">{}", JSON.toJSONString(data)); +// } + LOGGER.info(">SUCCESS{}", JSON.toJSONString(listMap)); }catch (Exception e) { e.printStackTrace(); } -- libgit2 0.21.2