From 35df1b8757bf8fdb1a8e36bfb0b18e5b74dfbe47 Mon Sep 17 00:00:00 2001 From: Black Pan Date: Wed, 3 Jul 2024 21:53:31 +0800 Subject: [PATCH 1/5] =?UTF-8?q?fix-=E4=BF=AE=E5=A4=8D=20inlineStr=20?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E5=8F=AF=E8=83=BD=E5=AD=98=E5=9C=A8=E7=9A=84?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=AF=BB=E5=8F=96=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v07/handlers/sax/XlsxRowHandler.java | 14 +++-- .../alibaba/excel/enums/CellDataTypeEnum.java | 1 - .../test/temp/issue3823/Issue3823Test.java | 50 ++++++++++++++++++ .../test/resources/temp/issue3823/bug.xlsx | Bin 0 -> 9018 bytes 4 files changed, 60 insertions(+), 5 deletions(-) create mode 100644 easyexcel-test/src/test/java/com/alibaba/easyexcel/test/temp/issue3823/Issue3823Test.java create mode 100644 easyexcel-test/src/test/resources/temp/issue3823/bug.xlsx diff --git a/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/sax/XlsxRowHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/sax/XlsxRowHandler.java index 7b48c8a6..fa04e353 100644 --- a/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/sax/XlsxRowHandler.java +++ b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/sax/XlsxRowHandler.java @@ -1,8 +1,5 @@ package com.alibaba.excel.analysis.v07.handlers.sax; -import java.util.HashMap; -import java.util.Map; - import com.alibaba.excel.analysis.v07.handlers.CellFormulaTagHandler; import com.alibaba.excel.analysis.v07.handlers.CellInlineStringValueTagHandler; import com.alibaba.excel.analysis.v07.handlers.CellTagHandler; @@ -14,12 +11,15 @@ import com.alibaba.excel.analysis.v07.handlers.RowTagHandler; import com.alibaba.excel.analysis.v07.handlers.XlsxTagHandler; import com.alibaba.excel.constant.ExcelXmlConstants; import com.alibaba.excel.context.xlsx.XlsxReadContext; - +import com.alibaba.excel.enums.CellDataTypeEnum; import lombok.extern.slf4j.Slf4j; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; +import java.util.HashMap; +import java.util.Map; + /** * @author jipengfei */ @@ -87,6 +87,12 @@ public class XlsxRowHandler extends DefaultHandler { if (handler == null || !handler.support(xlsxReadContext)) { return; } + //If the cell type is 'inLineStr', then only the content of the label is read + if (xlsxReadContext.xlsxReadSheetHolder().getTempCellData() != null + && CellDataTypeEnum.DIRECT_STRING.equals(xlsxReadContext.xlsxReadSheetHolder().getTempCellData().getType()) + && !"t".equals(currentTag)) { + return; + } handler.characters(xlsxReadContext, ch, start, length); } diff --git a/easyexcel-core/src/main/java/com/alibaba/excel/enums/CellDataTypeEnum.java b/easyexcel-core/src/main/java/com/alibaba/excel/enums/CellDataTypeEnum.java index 0f1a46cf..1e0ab5ee 100644 --- a/easyexcel-core/src/main/java/com/alibaba/excel/enums/CellDataTypeEnum.java +++ b/easyexcel-core/src/main/java/com/alibaba/excel/enums/CellDataTypeEnum.java @@ -50,7 +50,6 @@ public enum CellDataTypeEnum { static { TYPE_ROUTING_MAP.put("s", STRING); - TYPE_ROUTING_MAP.put("str", DIRECT_STRING); TYPE_ROUTING_MAP.put("inlineStr", DIRECT_STRING); TYPE_ROUTING_MAP.put("e", ERROR); TYPE_ROUTING_MAP.put("b", BOOLEAN); diff --git a/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/temp/issue3823/Issue3823Test.java b/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/temp/issue3823/Issue3823Test.java new file mode 100644 index 00000000..39d26717 --- /dev/null +++ b/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/temp/issue3823/Issue3823Test.java @@ -0,0 +1,50 @@ +package com.alibaba.easyexcel.test.temp.issue3823; + +import com.alibaba.easyexcel.test.util.TestFileUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.read.listener.ReadListener; +import com.alibaba.fastjson2.JSON; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.junit.jupiter.api.Test; + +import java.io.File; + +public class Issue3823Test { + + + + + @Test + public void test() throws Exception { + + String fileName = TestFileUtil.getPath() + "temp" + File.separator + "issue3823" + File.separator + "bug.xlsx"; + + EasyExcel.read(fileName, new ReadListener() { + @Override + public void invoke(Object data, AnalysisContext context) { + System.out.println(JSON.toJSONString(data)); + } + + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + + } + }).sheet().doRead(); + + + XSSFWorkbook workbook = new XSSFWorkbook(fileName); + XSSFSheet sheet = workbook.getSheetAt(0); + for (Row row : sheet) { + StringBuilder sb = new StringBuilder(); + for (Cell cell : row) { + sb.append(cell.getStringCellValue()).append(" "); + } + System.out.println(sb); + } + } + +} diff --git a/easyexcel-test/src/test/resources/temp/issue3823/bug.xlsx b/easyexcel-test/src/test/resources/temp/issue3823/bug.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..d9948a6b8e4b7e6bcac5e4f93d0aee5d9fd61511 GIT binary patch literal 9018 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 VFAW9#Y>5Q=Sb(}@GvV{m{{i;d1cLwo literal 0 HcmV?d00001 From 1e795b1357fa7b6ac106707af24ac9146ab7ce51 Mon Sep 17 00:00:00 2001 From: Black Pan Date: Wed, 3 Jul 2024 21:57:59 +0800 Subject: [PATCH 2/5] =?UTF-8?q?fix-=E4=BF=AE=E5=A4=8D=20inlineStr=20?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E5=8F=AF=E8=83=BD=E5=AD=98=E5=9C=A8=E7=9A=84?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=AF=BB=E5=8F=96=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/alibaba/excel/enums/CellDataTypeEnum.java | 1 + 1 file changed, 1 insertion(+) diff --git a/easyexcel-core/src/main/java/com/alibaba/excel/enums/CellDataTypeEnum.java b/easyexcel-core/src/main/java/com/alibaba/excel/enums/CellDataTypeEnum.java index 1e0ab5ee..0f1a46cf 100644 --- a/easyexcel-core/src/main/java/com/alibaba/excel/enums/CellDataTypeEnum.java +++ b/easyexcel-core/src/main/java/com/alibaba/excel/enums/CellDataTypeEnum.java @@ -50,6 +50,7 @@ public enum CellDataTypeEnum { static { TYPE_ROUTING_MAP.put("s", STRING); + TYPE_ROUTING_MAP.put("str", DIRECT_STRING); TYPE_ROUTING_MAP.put("inlineStr", DIRECT_STRING); TYPE_ROUTING_MAP.put("e", ERROR); TYPE_ROUTING_MAP.put("b", BOOLEAN); From 71be721881c3169927c6b72e7b8c9a6b8103bc19 Mon Sep 17 00:00:00 2001 From: Black Pan Date: Wed, 3 Jul 2024 22:17:29 +0800 Subject: [PATCH 3/5] =?UTF-8?q?fix-=E4=BF=AE=E5=A4=8D=20inlineStr=20?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E5=8F=AF=E8=83=BD=E5=AD=98=E5=9C=A8=E7=9A=84?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=AF=BB=E5=8F=96=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alibaba/excel/analysis/v07/handlers/sax/XlsxRowHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/sax/XlsxRowHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/sax/XlsxRowHandler.java index fa04e353..9072a4a9 100644 --- a/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/sax/XlsxRowHandler.java +++ b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/sax/XlsxRowHandler.java @@ -90,7 +90,7 @@ public class XlsxRowHandler extends DefaultHandler { //If the cell type is 'inLineStr', then only the content of the label is read if (xlsxReadContext.xlsxReadSheetHolder().getTempCellData() != null && CellDataTypeEnum.DIRECT_STRING.equals(xlsxReadContext.xlsxReadSheetHolder().getTempCellData().getType()) - && !"t".equals(currentTag)) { + && "v".equals(currentTag)) { return; } handler.characters(xlsxReadContext, ch, start, length); From f1f5f055df5de2ec014a5ec9113a5a5f02b0b733 Mon Sep 17 00:00:00 2001 From: Black Pan Date: Wed, 3 Jul 2024 22:30:55 +0800 Subject: [PATCH 4/5] =?UTF-8?q?fix-=E4=BF=AE=E5=A4=8D=20inlineStr=20?= =?UTF-8?q?=E7=9A=84=E5=AF=B9=E5=BA=94=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/alibaba/excel/enums/CellDataTypeEnum.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/easyexcel-core/src/main/java/com/alibaba/excel/enums/CellDataTypeEnum.java b/easyexcel-core/src/main/java/com/alibaba/excel/enums/CellDataTypeEnum.java index 0f1a46cf..b88f9200 100644 --- a/easyexcel-core/src/main/java/com/alibaba/excel/enums/CellDataTypeEnum.java +++ b/easyexcel-core/src/main/java/com/alibaba/excel/enums/CellDataTypeEnum.java @@ -50,7 +50,7 @@ public enum CellDataTypeEnum { static { TYPE_ROUTING_MAP.put("s", STRING); - TYPE_ROUTING_MAP.put("str", DIRECT_STRING); + TYPE_ROUTING_MAP.put("str", ERROR); TYPE_ROUTING_MAP.put("inlineStr", DIRECT_STRING); TYPE_ROUTING_MAP.put("e", ERROR); TYPE_ROUTING_MAP.put("b", BOOLEAN); From 52ed818b3d4056c8ba6af05c90a1b82f502ead33 Mon Sep 17 00:00:00 2001 From: Black Pan Date: Thu, 4 Jul 2024 16:40:28 +0800 Subject: [PATCH 5/5] =?UTF-8?q?fix:=E6=9B=B4=E6=96=B0=E5=A4=87=E6=B3=A8,?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96=E4=BB=A3=E7=A0=81=E4=BB=A5=E4=BF=9D?= =?UTF-8?q?=E8=AF=81=E4=BB=A3=E7=A0=81=E8=A7=84=E8=8C=83.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v07/handlers/sax/XlsxRowHandler.java | 4 ++-- .../test/temp/issue3823/Issue3823Test.java | 23 ++++++++----------- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/sax/XlsxRowHandler.java b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/sax/XlsxRowHandler.java index 9072a4a9..25fcd0e8 100644 --- a/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/sax/XlsxRowHandler.java +++ b/easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/sax/XlsxRowHandler.java @@ -87,10 +87,10 @@ public class XlsxRowHandler extends DefaultHandler { if (handler == null || !handler.support(xlsxReadContext)) { return; } - //If the cell type is 'inLineStr', then only the content of the label is read + //If the cell type is 'inLineStr', then the label must be ignored if (xlsxReadContext.xlsxReadSheetHolder().getTempCellData() != null && CellDataTypeEnum.DIRECT_STRING.equals(xlsxReadContext.xlsxReadSheetHolder().getTempCellData().getType()) - && "v".equals(currentTag)) { + && ExcelXmlConstants.CELL_VALUE_TAG.equals(currentTag)) { return; } handler.characters(xlsxReadContext, ch, start, length); diff --git a/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/temp/issue3823/Issue3823Test.java b/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/temp/issue3823/Issue3823Test.java index 39d26717..60f84531 100644 --- a/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/temp/issue3823/Issue3823Test.java +++ b/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/temp/issue3823/Issue3823Test.java @@ -14,26 +14,23 @@ import org.junit.jupiter.api.Test; import java.io.File; public class Issue3823Test { - - - - + //Issue link: https://github.com/alibaba/easyexcel/issues/3823 @Test - public void test() throws Exception { + public void IssueTest() throws Exception { String fileName = TestFileUtil.getPath() + "temp" + File.separator + "issue3823" + File.separator + "bug.xlsx"; EasyExcel.read(fileName, new ReadListener() { - @Override - public void invoke(Object data, AnalysisContext context) { - System.out.println(JSON.toJSONString(data)); - } + @Override + public void invoke(Object data, AnalysisContext context) { + System.out.println(JSON.toJSONString(data)); + } - @Override - public void doAfterAllAnalysed(AnalysisContext context) { + @Override + public void doAfterAllAnalysed(AnalysisContext context) { - } - }).sheet().doRead(); + } + }).sheet().doRead(); XSSFWorkbook workbook = new XSSFWorkbook(fileName);