Commit 4e9847010b4269afb1265543d5a2031c8eeed8fd
1 parent
05ceff0f
Exists in
master
1.提交代码
Showing
10 changed files
with
122 additions
and
43 deletions
Show diff stats
src/main/java/com/taover/easyexcel/analysis/ExcelAnalyserImpl.java
| @@ -112,12 +112,17 @@ public class ExcelAnalyserImpl implements ExcelAnalyser { | @@ -112,12 +112,17 @@ public class ExcelAnalyserImpl implements ExcelAnalyser { | ||
| 112 | analysisContext.readWorkbookHolder().setParameterSheetDataList(readSheetList); | 112 | analysisContext.readWorkbookHolder().setParameterSheetDataList(readSheetList); |
| 113 | analysisContext.readWorkbookHolder().setReadAll(readAll); | 113 | analysisContext.readWorkbookHolder().setReadAll(readAll); |
| 114 | analysisContext.readWorkbookHolder().setReadJustSelected(false); | 114 | analysisContext.readWorkbookHolder().setReadJustSelected(false); |
| 115 | - for(ReadSheet item: readSheetList) { | ||
| 116 | - if(item.getSheetSelected()) { | ||
| 117 | - analysisContext.readWorkbookHolder().setReadJustSelected(true); | ||
| 118 | - break; | ||
| 119 | - } | 115 | + |
| 116 | + if(readSheetList != null) { | ||
| 117 | + for(ReadSheet item: readSheetList) { | ||
| 118 | + if(item.getSheetSelected() != null && item.getSheetSelected()) { | ||
| 119 | + analysisContext.readWorkbookHolder().setReadJustSelected(true); | ||
| 120 | + analysisContext.readWorkbookHolder().setReadAll(true); | ||
| 121 | + break; | ||
| 122 | + } | ||
| 123 | + } | ||
| 120 | } | 124 | } |
| 125 | + | ||
| 121 | try { | 126 | try { |
| 122 | excelReadExecutor.execute(); | 127 | excelReadExecutor.execute(); |
| 123 | } catch (ExcelAnalysisStopException e) { | 128 | } catch (ExcelAnalysisStopException e) { |
src/main/java/com/taover/easyexcel/analysis/v07/XlsxSaxAnalyser.java
| @@ -23,8 +23,11 @@ import org.apache.poi.xssf.usermodel.XSSFRelation; | @@ -23,8 +23,11 @@ import org.apache.poi.xssf.usermodel.XSSFRelation; | ||
| 23 | import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbook; | 23 | import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbook; |
| 24 | import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbookPr; | 24 | import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbookPr; |
| 25 | import org.openxmlformats.schemas.spreadsheetml.x2006.main.WorkbookDocument; | 25 | import org.openxmlformats.schemas.spreadsheetml.x2006.main.WorkbookDocument; |
| 26 | +import org.slf4j.Logger; | ||
| 27 | +import org.slf4j.LoggerFactory; | ||
| 26 | import org.xml.sax.ContentHandler; | 28 | import org.xml.sax.ContentHandler; |
| 27 | import org.xml.sax.InputSource; | 29 | import org.xml.sax.InputSource; |
| 30 | +import org.xml.sax.SAXException; | ||
| 28 | import org.xml.sax.XMLReader; | 31 | import org.xml.sax.XMLReader; |
| 29 | 32 | ||
| 30 | import com.taover.easyexcel.analysis.ExcelReadExecutor; | 33 | import com.taover.easyexcel.analysis.ExcelReadExecutor; |
| @@ -34,6 +37,7 @@ import com.taover.easyexcel.cache.ReadCache; | @@ -34,6 +37,7 @@ import com.taover.easyexcel.cache.ReadCache; | ||
| 34 | import com.taover.easyexcel.context.xlsx.XlsxReadContext; | 37 | import com.taover.easyexcel.context.xlsx.XlsxReadContext; |
| 35 | import com.taover.easyexcel.enums.CellExtraTypeEnum; | 38 | import com.taover.easyexcel.enums.CellExtraTypeEnum; |
| 36 | import com.taover.easyexcel.exception.ExcelAnalysisException; | 39 | import com.taover.easyexcel.exception.ExcelAnalysisException; |
| 40 | +import com.taover.easyexcel.exception.SheetNotSelectedException; | ||
| 37 | import com.taover.easyexcel.metadata.CellExtra; | 41 | import com.taover.easyexcel.metadata.CellExtra; |
| 38 | import com.taover.easyexcel.read.metadata.ReadSheet; | 42 | import com.taover.easyexcel.read.metadata.ReadSheet; |
| 39 | import com.taover.easyexcel.read.metadata.holder.xlsx.XlsxReadWorkbookHolder; | 43 | import com.taover.easyexcel.read.metadata.holder.xlsx.XlsxReadWorkbookHolder; |
| @@ -46,7 +50,8 @@ import com.taover.easyexcel.util.StringUtils; | @@ -46,7 +50,8 @@ import com.taover.easyexcel.util.StringUtils; | ||
| 46 | * @author jipengfei | 50 | * @author jipengfei |
| 47 | */ | 51 | */ |
| 48 | public class XlsxSaxAnalyser implements ExcelReadExecutor { | 52 | public class XlsxSaxAnalyser implements ExcelReadExecutor { |
| 49 | - | 53 | + private static final Logger LOGGER = LoggerFactory.getLogger(XlsxSaxAnalyser.class); |
| 54 | + | ||
| 50 | private XlsxReadContext xlsxReadContext; | 55 | private XlsxReadContext xlsxReadContext; |
| 51 | private List<ReadSheet> sheetList; | 56 | private List<ReadSheet> sheetList; |
| 52 | private Map<Integer, InputStream> sheetMap; | 57 | private Map<Integer, InputStream> sheetMap; |
| @@ -177,6 +182,10 @@ public class XlsxSaxAnalyser implements ExcelReadExecutor { | @@ -177,6 +182,10 @@ public class XlsxSaxAnalyser implements ExcelReadExecutor { | ||
| 177 | xmlReader.setContentHandler(handler); | 182 | xmlReader.setContentHandler(handler); |
| 178 | xmlReader.parse(inputSource); | 183 | xmlReader.parse(inputSource); |
| 179 | inputStream.close(); | 184 | inputStream.close(); |
| 185 | + } catch (SAXException e) { | ||
| 186 | + if(e.getException() instanceof SheetNotSelectedException) { | ||
| 187 | + LOGGER.warn(e.getMessage()); | ||
| 188 | + } | ||
| 180 | } catch (ExcelAnalysisException e) { | 189 | } catch (ExcelAnalysisException e) { |
| 181 | throw e; | 190 | throw e; |
| 182 | } catch (Exception e) { | 191 | } catch (Exception e) { |
| @@ -197,16 +206,12 @@ public class XlsxSaxAnalyser implements ExcelReadExecutor { | @@ -197,16 +206,12 @@ public class XlsxSaxAnalyser implements ExcelReadExecutor { | ||
| 197 | for (ReadSheet readSheet : sheetList) { | 206 | for (ReadSheet readSheet : sheetList) { |
| 198 | readSheet = SheetUtils.match(readSheet, xlsxReadContext); | 207 | readSheet = SheetUtils.match(readSheet, xlsxReadContext); |
| 199 | if (readSheet != null) { | 208 | if (readSheet != null) { |
| 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 | - } | 209 | + xlsxReadContext.currentSheet(readSheet); |
| 210 | + parseXmlSource(sheetMap.get(readSheet.getSheetNo()), new XlsxRowHandler(xlsxReadContext)); | ||
| 211 | + // Read comments | ||
| 212 | + readComments(readSheet); | ||
| 213 | + // The last sheet is read | ||
| 214 | + xlsxReadContext.analysisEventProcessor().endSheet(xlsxReadContext); | ||
| 210 | } | 215 | } |
| 211 | } | 216 | } |
| 212 | } | 217 | } |
src/main/java/com/taover/easyexcel/analysis/v07/handlers/AbstractXlsxTagHandler.java
| 1 | package com.taover.easyexcel.analysis.v07.handlers; | 1 | package com.taover.easyexcel.analysis.v07.handlers; |
| 2 | 2 | ||
| 3 | import org.xml.sax.Attributes; | 3 | import org.xml.sax.Attributes; |
| 4 | +import org.xml.sax.SAXException; | ||
| 4 | 5 | ||
| 5 | import com.taover.easyexcel.context.xlsx.XlsxReadContext; | 6 | import com.taover.easyexcel.context.xlsx.XlsxReadContext; |
| 6 | 7 | ||
| @@ -31,7 +32,7 @@ public abstract class AbstractXlsxTagHandler implements XlsxTagHandler { | @@ -31,7 +32,7 @@ public abstract class AbstractXlsxTagHandler implements XlsxTagHandler { | ||
| 31 | } | 32 | } |
| 32 | 33 | ||
| 33 | @Override | 34 | @Override |
| 34 | - public void startElement(XlsxReadContext xlsxReadContext, String name, Attributes attributes) { | 35 | + public void startElement(XlsxReadContext xlsxReadContext, String name, Attributes attributes) throws SAXException { |
| 35 | 36 | ||
| 36 | } | 37 | } |
| 37 | 38 |
src/main/java/com/taover/easyexcel/analysis/v07/handlers/SheetViewHandler.java
0 → 100644
| @@ -0,0 +1,29 @@ | @@ -0,0 +1,29 @@ | ||
| 1 | +package com.taover.easyexcel.analysis.v07.handlers; | ||
| 2 | + | ||
| 3 | +import org.xml.sax.Attributes; | ||
| 4 | +import org.xml.sax.SAXException; | ||
| 5 | + | ||
| 6 | +import com.taover.easyexcel.constant.ExcelXmlConstants; | ||
| 7 | +import com.taover.easyexcel.context.xlsx.XlsxReadContext; | ||
| 8 | +import com.taover.easyexcel.exception.SheetNotSelectedException; | ||
| 9 | + | ||
| 10 | +/** | ||
| 11 | + * Cell Handler | ||
| 12 | + * | ||
| 13 | + * @author jipengfei | ||
| 14 | + */ | ||
| 15 | +public class SheetViewHandler extends AbstractXlsxTagHandler { | ||
| 16 | + | ||
| 17 | + @Override | ||
| 18 | + public void startElement(XlsxReadContext xlsxReadContext, String name, Attributes attributes) throws SAXException { | ||
| 19 | + //whether just read selected sheet | ||
| 20 | + Boolean readJustSelected = xlsxReadContext.readWorkbookHolder().getReadJustSelected(); | ||
| 21 | + if(ExcelXmlConstants.SHEET_VIEW_TAG.equals(name) | ||
| 22 | + && readJustSelected != null | ||
| 23 | + && readJustSelected | ||
| 24 | + && !"1".equals(attributes.getValue(ExcelXmlConstants.ATTRIBUTE_TAB_SELECTED))) { | ||
| 25 | + throw new SAXException("not selected sheet, just read selected sheet", new SheetNotSelectedException()); | ||
| 26 | + } | ||
| 27 | + } | ||
| 28 | + | ||
| 29 | +} |
src/main/java/com/taover/easyexcel/analysis/v07/handlers/XlsxTagHandler.java
| 1 | package com.taover.easyexcel.analysis.v07.handlers; | 1 | package com.taover.easyexcel.analysis.v07.handlers; |
| 2 | 2 | ||
| 3 | import org.xml.sax.Attributes; | 3 | import org.xml.sax.Attributes; |
| 4 | +import org.xml.sax.SAXException; | ||
| 4 | 5 | ||
| 5 | import com.taover.easyexcel.context.xlsx.XlsxReadContext; | 6 | import com.taover.easyexcel.context.xlsx.XlsxReadContext; |
| 6 | 7 | ||
| @@ -28,8 +29,9 @@ public interface XlsxTagHandler { | @@ -28,8 +29,9 @@ public interface XlsxTagHandler { | ||
| 28 | * Tag name | 29 | * Tag name |
| 29 | * @param attributes | 30 | * @param attributes |
| 30 | * Tag attributes | 31 | * Tag attributes |
| 32 | + * @throws SAXException | ||
| 31 | */ | 33 | */ |
| 32 | - void startElement(XlsxReadContext xlsxReadContext, String name, Attributes attributes); | 34 | + void startElement(XlsxReadContext xlsxReadContext, String name, Attributes attributes) throws SAXException; |
| 33 | 35 | ||
| 34 | /** | 36 | /** |
| 35 | * End handle | 37 | * End handle |
src/main/java/com/taover/easyexcel/analysis/v07/handlers/sax/XlsxRowHandler.java
| @@ -3,6 +3,8 @@ package com.taover.easyexcel.analysis.v07.handlers.sax; | @@ -3,6 +3,8 @@ package com.taover.easyexcel.analysis.v07.handlers.sax; | ||
| 3 | import java.util.HashMap; | 3 | import java.util.HashMap; |
| 4 | import java.util.Map; | 4 | import java.util.Map; |
| 5 | 5 | ||
| 6 | +import org.slf4j.Logger; | ||
| 7 | +import org.slf4j.LoggerFactory; | ||
| 6 | import org.xml.sax.Attributes; | 8 | import org.xml.sax.Attributes; |
| 7 | import org.xml.sax.SAXException; | 9 | import org.xml.sax.SAXException; |
| 8 | import org.xml.sax.helpers.DefaultHandler; | 10 | import org.xml.sax.helpers.DefaultHandler; |
| @@ -15,6 +17,7 @@ import com.taover.easyexcel.analysis.v07.handlers.CountTagHandler; | @@ -15,6 +17,7 @@ import com.taover.easyexcel.analysis.v07.handlers.CountTagHandler; | ||
| 15 | import com.taover.easyexcel.analysis.v07.handlers.HyperlinkTagHandler; | 17 | import com.taover.easyexcel.analysis.v07.handlers.HyperlinkTagHandler; |
| 16 | import com.taover.easyexcel.analysis.v07.handlers.MergeCellTagHandler; | 18 | import com.taover.easyexcel.analysis.v07.handlers.MergeCellTagHandler; |
| 17 | import com.taover.easyexcel.analysis.v07.handlers.RowTagHandler; | 19 | import com.taover.easyexcel.analysis.v07.handlers.RowTagHandler; |
| 20 | +import com.taover.easyexcel.analysis.v07.handlers.SheetViewHandler; | ||
| 18 | import com.taover.easyexcel.analysis.v07.handlers.XlsxTagHandler; | 21 | import com.taover.easyexcel.analysis.v07.handlers.XlsxTagHandler; |
| 19 | import com.taover.easyexcel.constant.ExcelXmlConstants; | 22 | import com.taover.easyexcel.constant.ExcelXmlConstants; |
| 20 | import com.taover.easyexcel.context.xlsx.XlsxReadContext; | 23 | import com.taover.easyexcel.context.xlsx.XlsxReadContext; |
| @@ -23,7 +26,8 @@ import com.taover.easyexcel.context.xlsx.XlsxReadContext; | @@ -23,7 +26,8 @@ import com.taover.easyexcel.context.xlsx.XlsxReadContext; | ||
| 23 | * @author jipengfei | 26 | * @author jipengfei |
| 24 | */ | 27 | */ |
| 25 | public class XlsxRowHandler extends DefaultHandler { | 28 | public class XlsxRowHandler extends DefaultHandler { |
| 26 | - private static final boolean XLSX_DEBUB_PRINT_INFO = false; | 29 | + private static final Logger LOGGER = LoggerFactory.getLogger(XlsxRowHandler.class); |
| 30 | + private static final boolean XLSX_DEBUG_PRINT_INFO = false; | ||
| 27 | private XlsxReadContext xlsxReadContext; | 31 | private XlsxReadContext xlsxReadContext; |
| 28 | private static final Map<String, XlsxTagHandler> XLSX_CELL_HANDLER_MAP = new HashMap<String, XlsxTagHandler>(32); | 32 | private static final Map<String, XlsxTagHandler> XLSX_CELL_HANDLER_MAP = new HashMap<String, XlsxTagHandler>(32); |
| 29 | 33 | ||
| @@ -52,6 +56,9 @@ public class XlsxRowHandler extends DefaultHandler { | @@ -52,6 +56,9 @@ public class XlsxRowHandler extends DefaultHandler { | ||
| 52 | RowTagHandler rowTagHandler = new RowTagHandler(); | 56 | RowTagHandler rowTagHandler = new RowTagHandler(); |
| 53 | XLSX_CELL_HANDLER_MAP.put(ExcelXmlConstants.ROW_TAG, rowTagHandler); | 57 | XLSX_CELL_HANDLER_MAP.put(ExcelXmlConstants.ROW_TAG, rowTagHandler); |
| 54 | XLSX_CELL_HANDLER_MAP.put(ExcelXmlConstants.X_ROW_TAG, rowTagHandler); | 58 | XLSX_CELL_HANDLER_MAP.put(ExcelXmlConstants.X_ROW_TAG, rowTagHandler); |
| 59 | + SheetViewHandler sheetViewHandler = new SheetViewHandler(); | ||
| 60 | + XLSX_CELL_HANDLER_MAP.put(ExcelXmlConstants.SHEET_VIEW_TAG, sheetViewHandler); | ||
| 61 | + XLSX_CELL_HANDLER_MAP.put(ExcelXmlConstants.X_SHEET_VIEW_TAG, sheetViewHandler); | ||
| 55 | } | 62 | } |
| 56 | 63 | ||
| 57 | public XlsxRowHandler(XlsxReadContext xlsxReadContext) { | 64 | public XlsxRowHandler(XlsxReadContext xlsxReadContext) { |
| @@ -60,20 +67,10 @@ public class XlsxRowHandler extends DefaultHandler { | @@ -60,20 +67,10 @@ public class XlsxRowHandler extends DefaultHandler { | ||
| 60 | 67 | ||
| 61 | @Override | 68 | @Override |
| 62 | public void startElement(String uri, String localName, String name, Attributes attributes) throws SAXException { | 69 | public void startElement(String uri, String localName, String name, Attributes attributes) throws SAXException { |
| 63 | - if(XLSX_DEBUB_PRINT_INFO) { | 70 | + if(XLSX_DEBUG_PRINT_INFO) { |
| 64 | this.printElement("startElement", uri, localName, name, attributes); | 71 | this.printElement("startElement", uri, localName, name, attributes); |
| 65 | } | 72 | } |
| 66 | 73 | ||
| 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 | - | ||
| 77 | XlsxTagHandler handler = XLSX_CELL_HANDLER_MAP.get(name); | 74 | XlsxTagHandler handler = XLSX_CELL_HANDLER_MAP.get(name); |
| 78 | if (handler == null | 75 | if (handler == null |
| 79 | || !handler.support(xlsxReadContext) | 76 | || !handler.support(xlsxReadContext) |
| @@ -85,22 +82,22 @@ public class XlsxRowHandler extends DefaultHandler { | @@ -85,22 +82,22 @@ public class XlsxRowHandler extends DefaultHandler { | ||
| 85 | } | 82 | } |
| 86 | 83 | ||
| 87 | private void printElement(String title, String uri, String localName, String name, Attributes attributes) { | 84 | private void printElement(String title, String uri, String localName, String name, Attributes attributes) { |
| 88 | - System.out.println("======"+title+"======"); | ||
| 89 | - System.out.println("> uri:"+uri); | ||
| 90 | - System.out.println("> localName:"+localName); | ||
| 91 | - System.out.println("> name:"+name); | 85 | + LOGGER.debug("======"+title+"======"); |
| 86 | + LOGGER.debug("> uri:"+uri); | ||
| 87 | + LOGGER.debug("> localName:"+localName); | ||
| 88 | + LOGGER.debug("> name:"+name); | ||
| 92 | if(attributes == null) { | 89 | if(attributes == null) { |
| 93 | return; | 90 | return; |
| 94 | } | 91 | } |
| 95 | for(int i=0; i<attributes.getLength(); ++i) { | 92 | for(int i=0; i<attributes.getLength(); ++i) { |
| 96 | - System.out.println(">> attributes["+i+"]->uri:"+attributes.getURI(i)+",qName:"+attributes.getQName(i)+",value:"+attributes.getValue(i)); | 93 | + LOGGER.debug(">> attributes["+i+"]->uri:"+attributes.getURI(i)+",qName:"+attributes.getQName(i)+",value:"+attributes.getValue(i)); |
| 97 | } | 94 | } |
| 98 | } | 95 | } |
| 99 | 96 | ||
| 100 | @Override | 97 | @Override |
| 101 | public void characters(char[] ch, int start, int length) throws SAXException { | 98 | public void characters(char[] ch, int start, int length) throws SAXException { |
| 102 | - if(XLSX_DEBUB_PRINT_INFO) { | ||
| 103 | - this.printCharacters(ch); | 99 | + if(XLSX_DEBUG_PRINT_INFO) { |
| 100 | + this.printCharacters(ch, start, length); | ||
| 104 | } | 101 | } |
| 105 | String currentTag = xlsxReadContext.xlsxReadSheetHolder().getTagDeque().peek(); | 102 | String currentTag = xlsxReadContext.xlsxReadSheetHolder().getTagDeque().peek(); |
| 106 | if (currentTag == null) { | 103 | if (currentTag == null) { |
| @@ -115,14 +112,14 @@ public class XlsxRowHandler extends DefaultHandler { | @@ -115,14 +112,14 @@ public class XlsxRowHandler extends DefaultHandler { | ||
| 115 | handler.characters(xlsxReadContext, ch, start, length); | 112 | handler.characters(xlsxReadContext, ch, start, length); |
| 116 | } | 113 | } |
| 117 | 114 | ||
| 118 | - private void printCharacters(char[] ch) { | ||
| 119 | - System.out.println(">>>>>>characters>>>>>>"); | ||
| 120 | - System.out.println(new String(ch)); | 115 | + private void printCharacters(char[] ch, int start, int length) { |
| 116 | + LOGGER.debug(">>>>>>characters>>>>>>"); | ||
| 117 | + LOGGER.debug(new String(ch, start, length)); | ||
| 121 | } | 118 | } |
| 122 | 119 | ||
| 123 | @Override | 120 | @Override |
| 124 | public void endElement(String uri, String localName, String name) throws SAXException { | 121 | public void endElement(String uri, String localName, String name) throws SAXException { |
| 125 | - if(XLSX_DEBUB_PRINT_INFO) { | 122 | + if(XLSX_DEBUG_PRINT_INFO) { |
| 126 | this.printElement("endElement", uri, localName, name, null); | 123 | this.printElement("endElement", uri, localName, name, null); |
| 127 | } | 124 | } |
| 128 | XlsxTagHandler handler = XLSX_CELL_HANDLER_MAP.get(name); | 125 | XlsxTagHandler handler = XLSX_CELL_HANDLER_MAP.get(name); |
src/main/java/com/taover/easyexcel/constant/ExcelXmlConstants.java
| @@ -61,4 +61,6 @@ public class ExcelXmlConstants { | @@ -61,4 +61,6 @@ public class ExcelXmlConstants { | ||
| 61 | * hidden attribute | 61 | * hidden attribute |
| 62 | */ | 62 | */ |
| 63 | public static final String ATTRIBUTE_HIDDEN = "hidden"; | 63 | public static final String ATTRIBUTE_HIDDEN = "hidden"; |
| 64 | + | ||
| 65 | + public static final String ATTRIBUTE_TAB_SELECTED = "tabSelected"; | ||
| 64 | } | 66 | } |
src/main/java/com/taover/easyexcel/exception/SheetNotSelectedException.java
0 → 100644
| @@ -0,0 +1,22 @@ | @@ -0,0 +1,22 @@ | ||
| 1 | +package com.taover.easyexcel.exception; | ||
| 2 | + | ||
| 3 | +/** | ||
| 4 | + * | ||
| 5 | + * @author Wang bin | ||
| 6 | + */ | ||
| 7 | +public class SheetNotSelectedException extends RuntimeException { | ||
| 8 | + | ||
| 9 | + public SheetNotSelectedException() {} | ||
| 10 | + | ||
| 11 | + public SheetNotSelectedException(String message) { | ||
| 12 | + super(message); | ||
| 13 | + } | ||
| 14 | + | ||
| 15 | + public SheetNotSelectedException(String message, Throwable cause) { | ||
| 16 | + super(message, cause); | ||
| 17 | + } | ||
| 18 | + | ||
| 19 | + public SheetNotSelectedException(Throwable cause) { | ||
| 20 | + super(cause); | ||
| 21 | + } | ||
| 22 | +} |
src/main/java/com/taover/easyexcel/util/SheetUtils.java
| @@ -27,9 +27,25 @@ public class SheetUtils { | @@ -27,9 +27,25 @@ public class SheetUtils { | ||
| 27 | */ | 27 | */ |
| 28 | public static ReadSheet match(ReadSheet readSheet, AnalysisContext analysisContext) { | 28 | public static ReadSheet match(ReadSheet readSheet, AnalysisContext analysisContext) { |
| 29 | ReadWorkbookHolder readWorkbookHolder = analysisContext.readWorkbookHolder(); | 29 | ReadWorkbookHolder readWorkbookHolder = analysisContext.readWorkbookHolder(); |
| 30 | - if (readWorkbookHolder.getReadAll() || readWorkbookHolder.getReadJustSelected()) { | 30 | + //read all and not read just selected |
| 31 | + if (readWorkbookHolder.getReadAll() && !readWorkbookHolder.getReadJustSelected()) { | ||
| 31 | return readSheet; | 32 | return readSheet; |
| 32 | } | 33 | } |
| 34 | + | ||
| 35 | + //read just selected | ||
| 36 | + if(readWorkbookHolder.getReadJustSelected()) { | ||
| 37 | + for (ReadSheet parameterReadSheet : readWorkbookHolder.getParameterSheetDataList()) { | ||
| 38 | + if (parameterReadSheet == null) { | ||
| 39 | + continue; | ||
| 40 | + } | ||
| 41 | + if(parameterReadSheet.getSheetSelected() != null && parameterReadSheet.getSheetSelected()) { | ||
| 42 | + readSheet.copyBasicParameter(parameterReadSheet); | ||
| 43 | + return readSheet; | ||
| 44 | + } | ||
| 45 | + } | ||
| 46 | + } | ||
| 47 | + | ||
| 48 | + //read by sheet no | ||
| 33 | for (ReadSheet parameterReadSheet : readWorkbookHolder.getParameterSheetDataList()) { | 49 | for (ReadSheet parameterReadSheet : readWorkbookHolder.getParameterSheetDataList()) { |
| 34 | if (parameterReadSheet == null) { | 50 | if (parameterReadSheet == null) { |
| 35 | continue; | 51 | continue; |
src/test/java/com/taover/easyexcel/test/demo/read/ReadTest.java
| @@ -253,7 +253,7 @@ public class ReadTest { | @@ -253,7 +253,7 @@ public class ReadTest { | ||
| 253 | // } | 253 | // } |
| 254 | 254 | ||
| 255 | // 这里 也可以不指定class,返回一个list,然后读取第一个sheet 同步读取会自动finish | 255 | // 这里 也可以不指定class,返回一个list,然后读取第一个sheet 同步读取会自动finish |
| 256 | - List<Map<Integer, String>> listMap = EasyExcel.read("D://demo.xlsx").sheet(true).doReadSync(); | 256 | + List<Map<Integer, String>> listMap = EasyExcel.read("D://demo.xlsx").headRowNumber(0).sheet(true).doReadSync(); |
| 257 | for (Map<Integer, String> data : listMap) { | 257 | for (Map<Integer, String> data : listMap) { |
| 258 | // 返回每条数据的键值对 表示所在的列 和所在列的值 | 258 | // 返回每条数据的键值对 表示所在的列 和所在列的值 |
| 259 | LOGGER.info("读取到数据:{}", JSON.toJSONString(data)); | 259 | LOGGER.info("读取到数据:{}", JSON.toJSONString(data)); |