+ * The {@link ModelBuildEventListener} is loaded by default to convert the object.
+ *
+ * @param useDefaultListener
+ * @return
+ */
+ public ExcelReaderBuilder useDefaultListener(Boolean useDefaultListener) {
+ readWorkbook.setUseDefaultListener(useDefaultListener);
+ return this;
+ }
+
public ExcelReader build() {
return new ExcelReader(readWorkbook);
}
diff --git a/src/main/java/com/alibaba/excel/read/metadata/ReadWorkbook.java b/src/main/java/com/alibaba/excel/read/metadata/ReadWorkbook.java
index c6bbf7a3..7ddab563 100644
--- a/src/main/java/com/alibaba/excel/read/metadata/ReadWorkbook.java
+++ b/src/main/java/com/alibaba/excel/read/metadata/ReadWorkbook.java
@@ -9,6 +9,7 @@ import com.alibaba.excel.cache.ReadCache;
import com.alibaba.excel.cache.selector.ReadCacheSelector;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
+import com.alibaba.excel.read.listener.ModelBuildEventListener;
import com.alibaba.excel.support.ExcelTypeEnum;
/**
@@ -76,6 +77,12 @@ public class ReadWorkbook extends ReadBasicParameter {
* @see SAXParserFactory#newInstance(String, ClassLoader)
*/
private String xlsxSAXParserFactoryName;
+ /**
+ * Whether to use the default listener, which is used by default.
+ *
+ * The {@link ModelBuildEventListener} is loaded by default to convert the object.
+ */
+ private Boolean useDefaultListener;
/**
* The default is all excel objects.Default is true.
*
@@ -197,4 +204,12 @@ public class ReadWorkbook extends ReadBasicParameter {
public void setXlsxSAXParserFactoryName(String xlsxSAXParserFactoryName) {
this.xlsxSAXParserFactoryName = xlsxSAXParserFactoryName;
}
+
+ public Boolean getUseDefaultListener() {
+ return useDefaultListener;
+ }
+
+ public void setUseDefaultListener(Boolean useDefaultListener) {
+ this.useDefaultListener = useDefaultListener;
+ }
}
diff --git a/src/main/java/com/alibaba/excel/read/metadata/holder/AbstractReadHolder.java b/src/main/java/com/alibaba/excel/read/metadata/holder/AbstractReadHolder.java
index 02b2ef5f..7133f995 100644
--- a/src/main/java/com/alibaba/excel/read/metadata/holder/AbstractReadHolder.java
+++ b/src/main/java/com/alibaba/excel/read/metadata/holder/AbstractReadHolder.java
@@ -26,6 +26,7 @@ import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.excel.read.listener.ReadListenerRegistryCenter;
import com.alibaba.excel.read.listener.event.AnalysisFinishEvent;
import com.alibaba.excel.read.metadata.ReadBasicParameter;
+import com.alibaba.excel.read.metadata.ReadWorkbook;
import com.alibaba.excel.read.metadata.property.ExcelReadHeadProperty;
import com.alibaba.excel.util.CollectionUtils;
import com.alibaba.excel.util.ConverterUtils;
@@ -91,7 +92,10 @@ public abstract class AbstractReadHolder extends AbstractHolder implements ReadH
this.readListenerList = new ArrayList(parentAbstractReadHolder.getReadListenerList());
}
if (HolderEnum.WORKBOOK.equals(holderType())) {
- readListenerList.add(new ModelBuildEventListener());
+ Boolean useDefaultListener = ((ReadWorkbook)readBasicParameter).getUseDefaultListener();
+ if (useDefaultListener == null || useDefaultListener) {
+ readListenerList.add(new ModelBuildEventListener());
+ }
}
if (readBasicParameter.getCustomReadListenerList() != null
&& !readBasicParameter.getCustomReadListenerList().isEmpty()) {
diff --git a/src/test/java/com/alibaba/easyexcel/test/temp/Lock2Test.java b/src/test/java/com/alibaba/easyexcel/test/temp/Lock2Test.java
index 1682aa17..ece5aa0e 100644
--- a/src/test/java/com/alibaba/easyexcel/test/temp/Lock2Test.java
+++ b/src/test/java/com/alibaba/easyexcel/test/temp/Lock2Test.java
@@ -1,7 +1,6 @@
package com.alibaba.easyexcel.test.temp;
import java.io.File;
-import java.io.FileInputStream;
import java.util.List;
import org.junit.Ignore;
@@ -9,13 +8,7 @@ import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.alibaba.easyexcel.test.demo.read.DemoData;
-import com.alibaba.easyexcel.test.demo.read.DemoDataListener;
-import com.alibaba.easyexcel.test.util.TestFileUtil;
import com.alibaba.excel.EasyExcel;
-import com.alibaba.excel.ExcelReader;
-import com.alibaba.excel.read.metadata.ReadSheet;
-import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.fastjson.JSON;
/**
@@ -43,7 +36,7 @@ public class Lock2Test {
// 写法1:
String fileName = "D:\\test\\珠海 (1).xlsx";
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
- EasyExcel.read(fileName, LockData.class, new LockDataListener()).sheet().doRead();
+ EasyExcel.read(fileName, LockData.class, new LockDataListener()).useDefaultListener(false).sheet().doRead();
}
@Test
diff --git a/src/test/java/com/alibaba/easyexcel/test/temp/LockDataListener.java b/src/test/java/com/alibaba/easyexcel/test/temp/LockDataListener.java
index bda277c6..d5891115 100644
--- a/src/test/java/com/alibaba/easyexcel/test/temp/LockDataListener.java
+++ b/src/test/java/com/alibaba/easyexcel/test/temp/LockDataListener.java
@@ -2,6 +2,7 @@ package com.alibaba.easyexcel.test.temp;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -9,6 +10,7 @@ import org.slf4j.LoggerFactory;
import com.alibaba.easyexcel.test.demo.read.DemoDataListener;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
+import com.alibaba.excel.metadata.CellData;
import com.alibaba.fastjson.JSON;
/**
@@ -16,16 +18,16 @@ import com.alibaba.fastjson.JSON;
*
* @author Jiaju Zhuang
*/
-public class LockDataListener extends AnalysisEventListener {
+public class LockDataListener extends AnalysisEventListener