Browse Source

Merge 52ed818b3d into aae9c61ab6

pull/3861/merge
psxjoy 5 months ago committed by GitHub
parent
commit
0e294e546d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 14
      easyexcel-core/src/main/java/com/alibaba/excel/analysis/v07/handlers/sax/XlsxRowHandler.java
  2. 2
      easyexcel-core/src/main/java/com/alibaba/excel/enums/CellDataTypeEnum.java
  3. 47
      easyexcel-test/src/test/java/com/alibaba/easyexcel/test/temp/issue3823/Issue3823Test.java
  4. BIN
      easyexcel-test/src/test/resources/temp/issue3823/bug.xlsx

14
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 the label <v> must be ignored
if (xlsxReadContext.xlsxReadSheetHolder().getTempCellData() != null
&& CellDataTypeEnum.DIRECT_STRING.equals(xlsxReadContext.xlsxReadSheetHolder().getTempCellData().getType())
&& ExcelXmlConstants.CELL_VALUE_TAG.equals(currentTag)) {
return;
}
handler.characters(xlsxReadContext, ch, start, length);
}

2
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);

47
easyexcel-test/src/test/java/com/alibaba/easyexcel/test/temp/issue3823/Issue3823Test.java

@ -0,0 +1,47 @@
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 {
//Issue link: https://github.com/alibaba/easyexcel/issues/3823
@Test
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 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);
}
}
}

BIN
easyexcel-test/src/test/resources/temp/issue3823/bug.xlsx

Binary file not shown.
Loading…
Cancel
Save