diff --git a/pom.xml b/pom.xml
index 641dd47612aace9395fa1e730297d0c14c62276a..6c90beb49e1784daa6e48a5a6418f490713de165 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 3521e46aada7ed6d33b017b4975f9d06694fabe6..f10fa5a4a1dbba6b9e649fa4cbf51349c89e579e 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 09c9264e8a84287be80992b4443ffeea4a44151f..7e685c97948836c9d79a102b914c87603f1da764 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 27f820bc99069f273b85d558f82629cd4d43dee9..ad09717f268a75a2bdf3f19a28f61a548d118d1e 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