diff --git a/src/main/java/com/alibaba/excel/analysis/v07/SharedStringsTableHandler.java b/src/main/java/com/alibaba/excel/analysis/v07/SharedStringsTableHandler.java index b4d91777a339783bba5d57528a412ba77ef863be..cca10f653ea5f5550f72e217aca9d1a42afe7151 100644 --- a/src/main/java/com/alibaba/excel/analysis/v07/SharedStringsTableHandler.java +++ b/src/main/java/com/alibaba/excel/analysis/v07/SharedStringsTableHandler.java @@ -16,11 +16,11 @@ public class SharedStringsTableHandler extends DefaultHandler { /** * The final piece of data */ - private String currentData; + private StringBuilder currentData; /** * Current element data */ - private String currentElementData; + private StringBuilder currentElementData; private ReadCache readCache; @@ -40,20 +40,26 @@ public class SharedStringsTableHandler extends DefaultHandler { @Override public void endElement(String uri, String localName, String name) { if (T_TAG.equals(name)) { - if (currentData == null) { - currentData = currentElementData; - } else { - if (currentElementData != null) { - currentData += currentElementData; + if (currentElementData != null) { + if (currentData == null) { + currentData = new StringBuilder(); } + currentData.append(currentElementData); } } else if (SI_TAG.equals(name)) { - readCache.put(currentData); + if (currentData == null) { + readCache.put(null); + } else { + readCache.put(currentData.toString()); + } } } @Override public void characters(char[] ch, int start, int length) { - currentElementData = new String(ch, start, length); + if (currentElementData == null) { + currentElementData = new StringBuilder(); + } + currentElementData.append(new String(ch, start, length)); } } diff --git a/src/main/java/com/alibaba/excel/metadata/property/ExcelHeadProperty.java b/src/main/java/com/alibaba/excel/metadata/property/ExcelHeadProperty.java index 2f117e153d81a81783c5efaacffcc17d530bb799..a1200d5c8750d7b6ca54074b31b0ac82afa3da0f 100644 --- a/src/main/java/com/alibaba/excel/metadata/property/ExcelHeadProperty.java +++ b/src/main/java/com/alibaba/excel/metadata/property/ExcelHeadProperty.java @@ -137,8 +137,8 @@ public class ExcelHeadProperty { continue; } if (customFiledMap.containsKey(excelProperty.index())) { - throw new ExcelGenerateException("The index of " + customFiledMap.get(excelProperty.index()).getName() - + " and " + field.getName() + " must be inconsistent"); + throw new ExcelGenerateException("The index of '" + customFiledMap.get(excelProperty.index()).getName() + + "' and '" + field.getName() + "' must be inconsistent"); } customFiledMap.put(excelProperty.index(), field); } diff --git a/src/test/java/com/alibaba/easyexcel/test/temp/simple/HgTest.java b/src/test/java/com/alibaba/easyexcel/test/temp/simple/HgTest.java new file mode 100644 index 0000000000000000000000000000000000000000..f5c33a2f85245f2756373c03e26395aebe09bf5e --- /dev/null +++ b/src/test/java/com/alibaba/easyexcel/test/temp/simple/HgTest.java @@ -0,0 +1,42 @@ +package com.alibaba.easyexcel.test.temp.simple; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.List; + +import org.apache.poi.xssf.streaming.SXSSFRow; +import org.apache.poi.xssf.streaming.SXSSFSheet; +import org.apache.poi.xssf.streaming.SXSSFWorkbook; +import org.apache.poi.xssf.usermodel.XSSFRow; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.junit.Ignore; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.alibaba.easyexcel.test.temp.poi.PoiTest; +import com.alibaba.easyexcel.test.util.TestFileUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.fastjson.JSON; + +/** + * 测试poi + * + * @author Jiaju Zhuang + **/ +@Ignore +public class HgTest { + private static final Logger LOGGER = LoggerFactory.getLogger(HgTest.class); + + @Test + public void hh() throws IOException { + List list = + EasyExcel.read(new FileInputStream("D:\\test\\hg2.xlsx")).sheet().headRowNumber(0).doReadSync(); + for (Object data : list) { + LOGGER.info("返回数据:{}", JSON.toJSONString(data)); + } + } + +} diff --git a/update.md b/update.md index c5ee9739bfad8225d7b47a88a6b00800307f83a5..028222745f7bbf9aeb602623a39fe71deb5802ae 100644 --- a/update.md +++ b/update.md @@ -1,6 +1,7 @@ # 2.0.0-beta2 * 加速gc回收 [Issue #511](https://github.com/alibaba/easyexcel/issues/511) * 修改空字符串读取可能读取上个字段的数据的bug +* 修改换行数据无法读取的bug # 2.0.0-beta1 * 优化读写逻辑