diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java index 3381f2d15d..a9249d57fd 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -2452,7 +2452,19 @@ public class DataSetTableService { if (num > 1000) { break; } - data.add(Arrays.asList(line.split(","))); + String str; + line += ","; + Pattern pCells = Pattern.compile("(\"[^\"]*(\"{2})*[^\"]*\")*[^,]*,"); + Matcher mCells = pCells.matcher(line); + List cells = new ArrayList();//每行记录一个list + //读取每个单元格 + while (mCells.find()) { + str = mCells.group(); + str = str.replaceAll("(?sm)\"?([^\"]*(\"{2})*[^\"]*)\"?.*,", "$1"); + str = str.replaceAll("(?sm)(\"(\"))", "$2"); + cells.add(str); + } + data.add(cells); num++; } ExcelSheetData excelSheetData = new ExcelSheetData(); diff --git a/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java b/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java index 71ff655b11..a10a0cd1ac 100644 --- a/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java +++ b/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java @@ -72,6 +72,8 @@ import javax.annotation.Resource; import java.io.*; import java.nio.charset.StandardCharsets; import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; @Service @@ -758,13 +760,20 @@ public class ExtractDataService { List> csvData = new ArrayList<>(); String line; while ((line = reader.readLine()) != null) { - if(line.endsWith(",")){ - List list = new ArrayList<>(Arrays.asList(line.split(","))); - list.add(""); - csvData.add(list); - }else { - csvData.add(Arrays.asList(line.split(","))); + + String str; + line += ","; + Pattern pCells = Pattern.compile("(\"[^\"]*(\"{2})*[^\"]*\")*[^,]*,"); + Matcher mCells = pCells.matcher(line); + List cells = new ArrayList();//每行记录一个list + //读取每个单元格 + while (mCells.find()) { + str = mCells.group(); + str = str.replaceAll("(?sm)\"?([^\"]*(\"{2})*[^\"]*)\"?.*,", "$1"); + str = str.replaceAll("(?sm)(\"(\"))", "$2"); + cells.add(str); } + csvData.add(cells); } ExcelSheetData csvSheetData = new ExcelSheetData(); String[] fieldArray = fields.stream().map(TableField::getFieldName).toArray(String[]::new);