Commit 21fd371554b60a603b645e444ff002493472f8c4

Authored by unknown
1 parent f0ea537f
Exists in master

.gitignore

@@ -15,3 +15,5 @@ antx.properties @@ -15,3 +15,5 @@ antx.properties
15 output/ 15 output/
16 /.gradle/ 16 /.gradle/
17 build/ 17 build/
  18 +bin/
  19 +./bin/
bin/.gitignore
1 /com/ 1 /com/
2 -/converter/  
3 -/dataformat/  
4 -/demo/  
5 -/extra/  
6 -/fill/  
7 -/large/  
8 -/logback.xml  
9 -/multiplesheets/  
10 -/simple/  
11 -/template/  
12 -/main/  
13 -/test/  
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&lt;Exce @@ -241,18 +241,26 @@ public class ExcelReaderBuilder extends AbstractExcelReaderParameterBuilder&lt;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&lt;Exce @@ -260,6 +268,9 @@ public class ExcelReaderBuilder extends AbstractExcelReaderParameterBuilder&lt;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 /**