Commit 21fd371554b60a603b645e444ff002493472f8c4
1 parent
f0ea537f
Exists in
master
.gitignore
Showing
12 changed files
with
108 additions
and
36 deletions
Show diff stats
.gitignore
bin/.gitignore
src/main/java/com/taover/easyexcel/analysis/ExcelAnalyserImpl.java
@@ -111,6 +111,12 @@ public class ExcelAnalyserImpl implements ExcelAnalyser { | @@ -111,6 +111,12 @@ public class ExcelAnalyserImpl implements ExcelAnalyser { | ||
111 | } | 111 | } |
112 | analysisContext.readWorkbookHolder().setParameterSheetDataList(readSheetList); | 112 | analysisContext.readWorkbookHolder().setParameterSheetDataList(readSheetList); |
113 | analysisContext.readWorkbookHolder().setReadAll(readAll); | 113 | analysisContext.readWorkbookHolder().setReadAll(readAll); |
114 | + for(ReadSheet item: readSheetList) { | ||
115 | + if(item.getSheetSelected()) { | ||
116 | + analysisContext.readWorkbookHolder().setReadJustSelected(true); | ||
117 | + break; | ||
118 | + } | ||
119 | + } | ||
114 | try { | 120 | try { |
115 | excelReadExecutor.execute(); | 121 | excelReadExecutor.execute(); |
116 | } catch (ExcelAnalysisStopException e) { | 122 | } catch (ExcelAnalysisStopException e) { |
src/main/java/com/taover/easyexcel/analysis/v07/XlsxSaxAnalyser.java
@@ -87,7 +87,7 @@ public class XlsxSaxAnalyser implements ExcelReadExecutor { | @@ -87,7 +87,7 @@ public class XlsxSaxAnalyser implements ExcelReadExecutor { | ||
87 | if (!ite.hasNext()) { | 87 | if (!ite.hasNext()) { |
88 | throw new ExcelAnalysisException("Can not find any sheet!"); | 88 | throw new ExcelAnalysisException("Can not find any sheet!"); |
89 | } | 89 | } |
90 | - while (ite.hasNext()) { | 90 | + while (ite.hasNext()) { |
91 | InputStream inputStream = ite.next(); | 91 | InputStream inputStream = ite.next(); |
92 | sheetList.add(new ReadSheet(index, ite.getSheetName())); | 92 | sheetList.add(new ReadSheet(index, ite.getSheetName())); |
93 | sheetMap.put(index, inputStream); | 93 | sheetMap.put(index, inputStream); |
src/main/java/com/taover/easyexcel/analysis/v07/handlers/RowTagHandler.java
@@ -23,7 +23,8 @@ public class RowTagHandler extends AbstractXlsxTagHandler { | @@ -23,7 +23,8 @@ public class RowTagHandler extends AbstractXlsxTagHandler { | ||
23 | 23 | ||
24 | @Override | 24 | @Override |
25 | public boolean checkAndDoStartElementSkip(XlsxReadContext xlsxReadContext, String name, Attributes attributes) { | 25 | public boolean checkAndDoStartElementSkip(XlsxReadContext xlsxReadContext, String name, Attributes attributes) { |
26 | - if(!xlsxReadContext.xlsxReadWorkbookHolder().getReadHiddenRow() | 26 | + if(xlsxReadContext.xlsxReadWorkbookHolder().getReadHiddenRow() != null |
27 | + && !xlsxReadContext.xlsxReadWorkbookHolder().getReadHiddenRow() | ||
27 | && isHiddenRow(attributes)) { | 28 | && isHiddenRow(attributes)) { |
28 | this.skipElementName = name; | 29 | this.skipElementName = name; |
29 | return true; | 30 | return true; |
src/main/java/com/taover/easyexcel/analysis/v07/handlers/sax/XlsxRowHandler.java
@@ -23,6 +23,7 @@ import com.taover.easyexcel.context.xlsx.XlsxReadContext; | @@ -23,6 +23,7 @@ import com.taover.easyexcel.context.xlsx.XlsxReadContext; | ||
23 | * @author jipengfei | 23 | * @author jipengfei |
24 | */ | 24 | */ |
25 | public class XlsxRowHandler extends DefaultHandler { | 25 | public class XlsxRowHandler extends DefaultHandler { |
26 | + private static final boolean XLSX_DEBUB_PRINT_INFO = true; | ||
26 | private XlsxReadContext xlsxReadContext; | 27 | private XlsxReadContext xlsxReadContext; |
27 | private static final Map<String, XlsxTagHandler> XLSX_CELL_HANDLER_MAP = new HashMap<String, XlsxTagHandler>(32); | 28 | private static final Map<String, XlsxTagHandler> XLSX_CELL_HANDLER_MAP = new HashMap<String, XlsxTagHandler>(32); |
28 | 29 | ||
@@ -59,6 +60,9 @@ public class XlsxRowHandler extends DefaultHandler { | @@ -59,6 +60,9 @@ public class XlsxRowHandler extends DefaultHandler { | ||
59 | 60 | ||
60 | @Override | 61 | @Override |
61 | public void startElement(String uri, String localName, String name, Attributes attributes) throws SAXException { | 62 | public void startElement(String uri, String localName, String name, Attributes attributes) throws SAXException { |
63 | + if(XLSX_DEBUB_PRINT_INFO) { | ||
64 | + this.printElement("startElement", uri, localName, name, attributes); | ||
65 | + } | ||
62 | XlsxTagHandler handler = XLSX_CELL_HANDLER_MAP.get(name); | 66 | XlsxTagHandler handler = XLSX_CELL_HANDLER_MAP.get(name); |
63 | if (handler == null | 67 | if (handler == null |
64 | || !handler.support(xlsxReadContext) | 68 | || !handler.support(xlsxReadContext) |
@@ -69,9 +73,25 @@ public class XlsxRowHandler extends DefaultHandler { | @@ -69,9 +73,25 @@ public class XlsxRowHandler extends DefaultHandler { | ||
69 | handler.startElement(xlsxReadContext, name, attributes); | 73 | handler.startElement(xlsxReadContext, name, attributes); |
70 | } | 74 | } |
71 | 75 | ||
72 | - @Override | 76 | + private void printElement(String title, String uri, String localName, String name, Attributes attributes) { |
77 | + System.out.println("======"+title+"======"); | ||
78 | + System.out.println("> uri:"+uri); | ||
79 | + System.out.println("> localName:"+localName); | ||
80 | + System.out.println("> name:"+name); | ||
81 | + if(attributes == null) { | ||
82 | + return; | ||
83 | + } | ||
84 | + for(int i=0; i<attributes.getLength(); ++i) { | ||
85 | + System.out.println(">> attributes["+i+"]->uri:"+attributes.getURI(i)+",qName:"+attributes.getQName(i)+",value:"+attributes.getValue(i)); | ||
86 | + } | ||
87 | + } | ||
88 | + | ||
89 | + @Override | ||
73 | public void characters(char[] ch, int start, int length) throws SAXException { | 90 | public void characters(char[] ch, int start, int length) throws SAXException { |
74 | - String currentTag = xlsxReadContext.xlsxReadSheetHolder().getTagDeque().peek(); | 91 | + if(XLSX_DEBUB_PRINT_INFO) { |
92 | + this.printCharacters(ch); | ||
93 | + } | ||
94 | + String currentTag = xlsxReadContext.xlsxReadSheetHolder().getTagDeque().peek(); | ||
75 | if (currentTag == null) { | 95 | if (currentTag == null) { |
76 | return; | 96 | return; |
77 | } | 97 | } |
@@ -84,8 +104,16 @@ public class XlsxRowHandler extends DefaultHandler { | @@ -84,8 +104,16 @@ public class XlsxRowHandler extends DefaultHandler { | ||
84 | handler.characters(xlsxReadContext, ch, start, length); | 104 | handler.characters(xlsxReadContext, ch, start, length); |
85 | } | 105 | } |
86 | 106 | ||
87 | - @Override | 107 | + private void printCharacters(char[] ch) { |
108 | + System.out.println(">>>>>>characters>>>>>>"); | ||
109 | + System.out.println(new String(ch)); | ||
110 | + } | ||
111 | + | ||
112 | + @Override | ||
88 | public void endElement(String uri, String localName, String name) throws SAXException { | 113 | public void endElement(String uri, String localName, String name) throws SAXException { |
114 | + if(XLSX_DEBUB_PRINT_INFO) { | ||
115 | + this.printElement("endElement", uri, localName, name, null); | ||
116 | + } | ||
89 | XlsxTagHandler handler = XLSX_CELL_HANDLER_MAP.get(name); | 117 | XlsxTagHandler handler = XLSX_CELL_HANDLER_MAP.get(name); |
90 | if (handler == null | 118 | if (handler == null |
91 | || !handler.support(xlsxReadContext) | 119 | || !handler.support(xlsxReadContext) |
src/main/java/com/taover/easyexcel/read/builder/ExcelReaderBuilder.java
@@ -241,18 +241,26 @@ public class ExcelReaderBuilder extends AbstractExcelReaderParameterBuilder<Exce | @@ -241,18 +241,26 @@ public class ExcelReaderBuilder extends AbstractExcelReaderParameterBuilder<Exce | ||
241 | } | 241 | } |
242 | 242 | ||
243 | public ExcelReaderSheetBuilder sheet() { | 243 | public ExcelReaderSheetBuilder sheet() { |
244 | - return sheet(null, null); | 244 | + return sheet(null, null, true); |
245 | } | 245 | } |
246 | 246 | ||
247 | public ExcelReaderSheetBuilder sheet(Integer sheetNo) { | 247 | public ExcelReaderSheetBuilder sheet(Integer sheetNo) { |
248 | - return sheet(sheetNo, null); | 248 | + return sheet(sheetNo, null, null); |
249 | } | 249 | } |
250 | 250 | ||
251 | public ExcelReaderSheetBuilder sheet(String sheetName) { | 251 | public ExcelReaderSheetBuilder sheet(String sheetName) { |
252 | - return sheet(null, sheetName); | 252 | + return sheet(null, sheetName, null); |
253 | + } | ||
254 | + | ||
255 | + public ExcelReaderSheetBuilder sheet(Boolean sheetSelected) { | ||
256 | + return sheet(null, null, sheetSelected); | ||
253 | } | 257 | } |
254 | 258 | ||
255 | public ExcelReaderSheetBuilder sheet(Integer sheetNo, String sheetName) { | 259 | public ExcelReaderSheetBuilder sheet(Integer sheetNo, String sheetName) { |
260 | + return sheet(sheetNo, sheetName, null); | ||
261 | + } | ||
262 | + | ||
263 | + public ExcelReaderSheetBuilder sheet(Integer sheetNo, String sheetName, Boolean sheetSelected) { | ||
256 | ExcelReaderSheetBuilder excelReaderSheetBuilder = new ExcelReaderSheetBuilder(build()); | 264 | ExcelReaderSheetBuilder excelReaderSheetBuilder = new ExcelReaderSheetBuilder(build()); |
257 | if (sheetNo != null) { | 265 | if (sheetNo != null) { |
258 | excelReaderSheetBuilder.sheetNo(sheetNo); | 266 | excelReaderSheetBuilder.sheetNo(sheetNo); |
@@ -260,6 +268,9 @@ public class ExcelReaderBuilder extends AbstractExcelReaderParameterBuilder<Exce | @@ -260,6 +268,9 @@ public class ExcelReaderBuilder extends AbstractExcelReaderParameterBuilder<Exce | ||
260 | if (sheetName != null) { | 268 | if (sheetName != null) { |
261 | excelReaderSheetBuilder.sheetName(sheetName); | 269 | excelReaderSheetBuilder.sheetName(sheetName); |
262 | } | 270 | } |
271 | + if (sheetSelected != null) { | ||
272 | + excelReaderSheetBuilder.sheetSelected(sheetSelected); | ||
273 | + } | ||
263 | return excelReaderSheetBuilder; | 274 | return excelReaderSheetBuilder; |
264 | } | 275 | } |
265 | 276 |
src/main/java/com/taover/easyexcel/read/builder/ExcelReaderSheetBuilder.java
@@ -52,6 +52,11 @@ public class ExcelReaderSheetBuilder extends AbstractExcelReaderParameterBuilder | @@ -52,6 +52,11 @@ public class ExcelReaderSheetBuilder extends AbstractExcelReaderParameterBuilder | ||
52 | readSheet.setSheetName(sheetName); | 52 | readSheet.setSheetName(sheetName); |
53 | return this; | 53 | return this; |
54 | } | 54 | } |
55 | + | ||
56 | + public ExcelReaderSheetBuilder sheetSelected(Boolean sheetSelected) { | ||
57 | + readSheet.setSheetSelected(sheetSelected); | ||
58 | + return this; | ||
59 | + } | ||
55 | 60 | ||
56 | public ReadSheet build() { | 61 | public ReadSheet build() { |
57 | return readSheet; | 62 | return readSheet; |
src/main/java/com/taover/easyexcel/read/metadata/ReadSheet.java
@@ -14,7 +14,11 @@ public class ReadSheet extends ReadBasicParameter { | @@ -14,7 +14,11 @@ public class ReadSheet extends ReadBasicParameter { | ||
14 | * sheet name | 14 | * sheet name |
15 | */ | 15 | */ |
16 | private String sheetName; | 16 | private String sheetName; |
17 | - | 17 | + /** |
18 | + * sheet is selected | ||
19 | + */ | ||
20 | + private Boolean sheetSelected; | ||
21 | + | ||
18 | public ReadSheet() {} | 22 | public ReadSheet() {} |
19 | 23 | ||
20 | public ReadSheet(Integer sheetNo) { | 24 | public ReadSheet(Integer sheetNo) { |
@@ -26,7 +30,13 @@ public class ReadSheet extends ReadBasicParameter { | @@ -26,7 +30,13 @@ public class ReadSheet extends ReadBasicParameter { | ||
26 | this.sheetName = sheetName; | 30 | this.sheetName = sheetName; |
27 | } | 31 | } |
28 | 32 | ||
29 | - public Integer getSheetNo() { | 33 | + public ReadSheet(Integer sheetNo, String sheetName, Boolean sheetSelected) { |
34 | + this.sheetNo = sheetNo; | ||
35 | + this.sheetName = sheetName; | ||
36 | + this.sheetSelected = sheetSelected; | ||
37 | + } | ||
38 | + | ||
39 | + public Integer getSheetNo() { | ||
30 | return sheetNo; | 40 | return sheetNo; |
31 | } | 41 | } |
32 | 42 | ||
@@ -41,8 +51,16 @@ public class ReadSheet extends ReadBasicParameter { | @@ -41,8 +51,16 @@ public class ReadSheet extends ReadBasicParameter { | ||
41 | public void setSheetName(String sheetName) { | 51 | public void setSheetName(String sheetName) { |
42 | this.sheetName = sheetName; | 52 | this.sheetName = sheetName; |
43 | } | 53 | } |
54 | + | ||
55 | + public Boolean getSheetSelected() { | ||
56 | + return sheetSelected; | ||
57 | + } | ||
58 | + | ||
59 | + public void setSheetSelected(Boolean sheetSelected) { | ||
60 | + this.sheetSelected = sheetSelected; | ||
61 | + } | ||
44 | 62 | ||
45 | - public void copyBasicParameter(ReadSheet other) { | 63 | + public void copyBasicParameter(ReadSheet other) { |
46 | if (other == null) { | 64 | if (other == null) { |
47 | return; | 65 | return; |
48 | } | 66 | } |
@@ -57,6 +75,6 @@ public class ReadSheet extends ReadBasicParameter { | @@ -57,6 +75,6 @@ public class ReadSheet extends ReadBasicParameter { | ||
57 | 75 | ||
58 | @Override | 76 | @Override |
59 | public String toString() { | 77 | public String toString() { |
60 | - return "ReadSheet{" + "sheetNo=" + sheetNo + ", sheetName='" + sheetName + '\'' + "} " + super.toString(); | 78 | + return "ReadSheet{" + "sheetNo=" + sheetNo + ", sheetName='" + sheetName + '\'' + "sheetSelected=" + sheetSelected + "} " + super.toString(); |
61 | } | 79 | } |
62 | } | 80 | } |
src/main/java/com/taover/easyexcel/read/metadata/holder/ReadWorkbookHolder.java
@@ -100,6 +100,10 @@ public class ReadWorkbookHolder extends AbstractReadHolder { | @@ -100,6 +100,10 @@ public class ReadWorkbookHolder extends AbstractReadHolder { | ||
100 | * Read all | 100 | * Read all |
101 | */ | 101 | */ |
102 | private Boolean readAll; | 102 | private Boolean readAll; |
103 | + /** | ||
104 | + * just remain selected sheet | ||
105 | + */ | ||
106 | + private Boolean readJustSelected; | ||
103 | 107 | ||
104 | /** | 108 | /** |
105 | * Read hidden row | 109 | * Read hidden row |
@@ -329,7 +333,15 @@ public class ReadWorkbookHolder extends AbstractReadHolder { | @@ -329,7 +333,15 @@ public class ReadWorkbookHolder extends AbstractReadHolder { | ||
329 | this.readAll = readAll; | 333 | this.readAll = readAll; |
330 | } | 334 | } |
331 | 335 | ||
332 | - @Override | 336 | + public Boolean getReadJustSelected() { |
337 | + return readJustSelected; | ||
338 | + } | ||
339 | + | ||
340 | + public void setReadJustSelected(Boolean readJustSelected) { | ||
341 | + this.readJustSelected = readJustSelected; | ||
342 | + } | ||
343 | + | ||
344 | + @Override | ||
333 | public HolderEnum holderType() { | 345 | public HolderEnum holderType() { |
334 | return HolderEnum.WORKBOOK; | 346 | return HolderEnum.WORKBOOK; |
335 | } | 347 | } |
src/main/java/com/taover/easyexcel/util/SheetUtils.java
@@ -27,7 +27,7 @@ public class SheetUtils { | @@ -27,7 +27,7 @@ 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()) { | 30 | + if (readWorkbookHolder.getReadAll() || readWorkbookHolder.getReadJustSelected()) { |
31 | return readSheet; | 31 | return readSheet; |
32 | } | 32 | } |
33 | for (ReadSheet parameterReadSheet : readWorkbookHolder.getParameterSheetDataList()) { | 33 | for (ReadSheet parameterReadSheet : readWorkbookHolder.getParameterSheetDataList()) { |
@@ -37,7 +37,7 @@ public class SheetUtils { | @@ -37,7 +37,7 @@ public class SheetUtils { | ||
37 | if (parameterReadSheet.getSheetNo() == null && parameterReadSheet.getSheetName() == null) { | 37 | if (parameterReadSheet.getSheetNo() == null && parameterReadSheet.getSheetName() == null) { |
38 | if (LOGGER.isDebugEnabled()) { | 38 | if (LOGGER.isDebugEnabled()) { |
39 | LOGGER.debug("The first is read by default."); | 39 | LOGGER.debug("The first is read by default."); |
40 | - } | 40 | + } |
41 | parameterReadSheet.setSheetNo(0); | 41 | parameterReadSheet.setSheetNo(0); |
42 | } | 42 | } |
43 | boolean match = (parameterReadSheet.getSheetNo() != null | 43 | boolean match = (parameterReadSheet.getSheetNo() != null |
src/test/java/com/taover/easyexcel/test/demo/read/ReadTest.java
@@ -253,17 +253,18 @@ public class ReadTest { | @@ -253,17 +253,18 @@ 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(fileName).sheet().doReadSync(); | ||
257 | -// for (Map<Integer, String> data : listMap) { | ||
258 | -// // 返回每条数据的键值对 表示所在的列 和所在列的值 | ||
259 | -// LOGGER.info("读取到数据:{}", JSON.toJSONString(data)); | ||
260 | -// } | ||
261 | - | ||
262 | - Map<Integer, List<Map<Integer, Object>>> mapListMap = EasyExcel.read(fileName).doReadAllSyncForMap(); | ||
263 | - for (Entry<Integer, List<Map<Integer, Object>>> item: mapListMap.entrySet()) { | 256 | + List<Map<Integer, String>> listMap = EasyExcel.read("D://demo.xlsx").sheet().doReadSync(); |
257 | + for (Map<Integer, String> data : listMap) { | ||
264 | // 返回每条数据的键值对 表示所在的列 和所在列的值 | 258 | // 返回每条数据的键值对 表示所在的列 和所在列的值 |
265 | - LOGGER.info("读取到数据:{}\n{}", JSON.toJSONString(item.getKey()), JSON.toJSONString(item.getValue())); | 259 | + LOGGER.info("读取到数据:{}", JSON.toJSONString(data)); |
266 | } | 260 | } |
261 | + | ||
262 | +// Map<Integer, List<Map<Integer, Object>>> mapListMap = EasyExcel.read(fileName).doReadAllSyncForMap(); | ||
263 | +// Map<Integer, List<Map<Integer, Object>>> mapListMap = EasyExcel.read("D://demo.xlsx").doReadAllSyncForMap(); | ||
264 | +// for (Entry<Integer, List<Map<Integer, Object>>> item: mapListMap.entrySet()) { | ||
265 | +// // 返回每条数据的键值对 表示所在的列 和所在列的值 | ||
266 | +// LOGGER.info("读取到数据:{}\n{}", JSON.toJSONString(item.getKey()), JSON.toJSONString(item.getValue())); | ||
267 | +// } | ||
267 | } | 268 | } |
268 | 269 | ||
269 | /** | 270 | /** |