diff --git a/pom.xml b/pom.xml
index 641dd476..6c90beb4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
com.alibaba
easyexcel
- 2.2.7
+ 2.2.8
jar
easyexcel
diff --git a/src/main/java/com/alibaba/excel/analysis/v07/handlers/AbstractCellValueTagHandler.java b/src/main/java/com/alibaba/excel/analysis/v07/handlers/AbstractCellValueTagHandler.java
index 3521e46a..f10fa5a4 100644
--- a/src/main/java/com/alibaba/excel/analysis/v07/handlers/AbstractCellValueTagHandler.java
+++ b/src/main/java/com/alibaba/excel/analysis/v07/handlers/AbstractCellValueTagHandler.java
@@ -7,6 +7,7 @@ import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.read.metadata.holder.xlsx.XlsxReadSheetHolder;
import com.alibaba.excel.util.BooleanUtils;
+import com.alibaba.excel.util.StringUtils;
/**
* Cell Value Handler
@@ -20,6 +21,7 @@ public abstract class AbstractCellValueTagHandler extends AbstractXlsxTagHandler
XlsxReadSheetHolder xlsxReadSheetHolder = xlsxReadContext.xlsxReadSheetHolder();
CellData tempCellData = xlsxReadSheetHolder.getTempCellData();
StringBuilder tempData = xlsxReadSheetHolder.getTempData();
+ String tempDataString = tempData.toString();
CellDataTypeEnum oldType = tempCellData.getType();
switch (oldType) {
case DIRECT_STRING:
@@ -28,10 +30,18 @@ public abstract class AbstractCellValueTagHandler extends AbstractXlsxTagHandler
tempCellData.setStringValue(tempData.toString());
break;
case BOOLEAN:
+ if(StringUtils.isEmpty(tempDataString)){
+ tempCellData.setType(CellDataTypeEnum.EMPTY);
+ break;
+ }
tempCellData.setBooleanValue(BooleanUtils.valueOf(tempData.toString()));
break;
case NUMBER:
case EMPTY:
+ if(StringUtils.isEmpty(tempDataString)){
+ tempCellData.setType(CellDataTypeEnum.EMPTY);
+ break;
+ }
tempCellData.setType(CellDataTypeEnum.NUMBER);
tempCellData.setNumberValue(new BigDecimal(tempData.toString()));
break;
diff --git a/src/main/java/com/alibaba/excel/analysis/v07/handlers/CellValueTagHandler.java b/src/main/java/com/alibaba/excel/analysis/v07/handlers/CellValueTagHandler.java
index 09c9264e..7e685c97 100644
--- a/src/main/java/com/alibaba/excel/analysis/v07/handlers/CellValueTagHandler.java
+++ b/src/main/java/com/alibaba/excel/analysis/v07/handlers/CellValueTagHandler.java
@@ -3,6 +3,7 @@ package com.alibaba.excel.analysis.v07.handlers;
import com.alibaba.excel.context.xlsx.XlsxReadContext;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.CellData;
+import com.alibaba.excel.util.StringUtils;
/**
* Cell Value Handler
@@ -17,6 +18,10 @@ public class CellValueTagHandler extends AbstractCellValueTagHandler {
CellData tempCellData = xlsxReadContext.xlsxReadSheetHolder().getTempCellData();
switch (tempCellData.getType()) {
case STRING:
+ // In some cases, although cell type is a string, it may be an empty tag
+ if(StringUtils.isEmpty(tempCellData.getStringValue())){
+ break;
+ }
String stringValue = xlsxReadContext.readWorkbookHolder().getReadCache()
.get(Integer.valueOf(tempCellData.getStringValue()));
if (stringValue != null && xlsxReadContext.currentReadHolder().globalConfiguration().getAutoTrim()) {
diff --git a/src/test/java/com/alibaba/easyexcel/test/temp/LockTest.java b/src/test/java/com/alibaba/easyexcel/test/temp/LockTest.java
index 27f820bc..ad09717f 100644
--- a/src/test/java/com/alibaba/easyexcel/test/temp/LockTest.java
+++ b/src/test/java/com/alibaba/easyexcel/test/temp/LockTest.java
@@ -26,11 +26,7 @@ public class LockTest {
public void test() throws Exception {
List