diff --git a/backend/src/main/java/io/dataease/commons/utils/ExcelReaderUtil.java b/backend/src/main/java/io/dataease/commons/utils/ExcelReaderUtil.java index 0881531648..d90f453cb2 100644 --- a/backend/src/main/java/io/dataease/commons/utils/ExcelReaderUtil.java +++ b/backend/src/main/java/io/dataease/commons/utils/ExcelReaderUtil.java @@ -1,6 +1,8 @@ package io.dataease.commons.utils; import com.google.gson.Gson; import io.dataease.datasource.dto.TableFiled; + +import java.io.FileInputStream; import java.io.InputStream; import java.util.List; @@ -49,16 +51,19 @@ public class ExcelReaderUtil { System.out.println(new Gson().toJson(field)); } System.out.println(excelXls.totalSheets.get(0).getData().get(0)); - + System.out.println(excelXls.totalSheets.get(0).getData().get(1)); + System.out.println(excelXls.totalSheets.get(0).getData().get(2)); } else if (fileName.endsWith(EXCEL07_EXTENSION)) {//处理excel2007文件 ExcelXlsxReader excelXlsxReader = new ExcelXlsxReader(); excelXlsxReader.process(inputStream); System.out.println(excelXlsxReader.totalSheets.size()); - System.out.println(excelXlsxReader.totalSheets.get(0).getExcelLable()); - for (TableFiled field : excelXlsxReader.totalSheets.get(0).getFields()) { + System.out.println(excelXlsxReader.totalSheets.get(1).getExcelLable()); + for (TableFiled field : excelXlsxReader.totalSheets.get(1).getFields()) { System.out.println(new Gson().toJson(field)); } System.out.println(excelXlsxReader.totalSheets.get(0).getData().get(0)); + System.out.println(excelXlsxReader.totalSheets.get(0).getData().get(1)); + System.out.println(excelXlsxReader.totalSheets.get(0).getData().get(2)); } else { throw new Exception("文件格式错误,fileName的扩展名只能是xls或xlsx。"); @@ -66,7 +71,7 @@ public class ExcelReaderUtil { } public static void main(String[] args) throws Exception { -// String file ="下单渠道.xlsx"; -// ExcelReaderUtil.readExcel(file, new FileInputStream("/Users/taojinlong/Desktop/" + file)); + String file ="赤收管理 2.xlsx"; + ExcelReaderUtil.readExcel(file, new FileInputStream("/Users/taojinlong/Desktop/" + file)); } } diff --git a/backend/src/main/java/io/dataease/commons/utils/ExcelXlsxReader.java b/backend/src/main/java/io/dataease/commons/utils/ExcelXlsxReader.java index 8751a7c203..cea6ed9acc 100644 --- a/backend/src/main/java/io/dataease/commons/utils/ExcelXlsxReader.java +++ b/backend/src/main/java/io/dataease/commons/utils/ExcelXlsxReader.java @@ -148,6 +148,7 @@ public class ExcelXlsxReader extends DefaultHandler { parser.setContentHandler(this); XSSFReader.SheetIterator sheets = (XSSFReader.SheetIterator) xssfReader.getSheetsData(); while (sheets.hasNext()) { //遍历sheet + curRow = 1; //标记初始行为第一行 fields.clear(); data.clear(); @@ -248,17 +249,12 @@ public class ExcelXlsxReader extends DefaultHandler { } else if ("v".equals(name)) { //v => 单元格的值,如果单元格是字符串,则v标签的值为该字符串在SST中的索引 String value = this.getDataValue(lastIndex.trim(), "");//根据索引值获取对应的单元格值 - if (preRef == null) { - String regEx="[^0-9]"; - Pattern p = Pattern.compile(regEx); - Matcher m = p.matcher(ref); - if(curCol < Integer.valueOf(m.replaceAll("").trim()) -1 ){ - cellList.add(curCol, ""); - curCol++; - } - preRef = ref; + preRef = "A" + curRow; + cellList.add(curCol, ""); + curCol++; } + //补全单元格之间的空单元格 if (!"A".equals(preRef.substring(0, 1)) && curRow==1 && preRef.equalsIgnoreCase(ref)) { throw new RuntimeException(Translator.get("i18n_excel_empty_column")); @@ -288,14 +284,6 @@ public class ExcelXlsxReader extends DefaultHandler { if (curRow == 1) { maxRef = ref; } - //补全一行尾部可能缺失的单元格 - if (maxRef != null) { - int len = countNullCell(maxRef, ref); - for (int i = 0; i <= len; i++) { - cellList.add(curCol, ""); - curCol++; - } - } if(curRow>1){ List tmp = new ArrayList<>(cellList); this.getData().add(tmp); diff --git a/frontend/src/views/dataset/add/AddExcel.vue b/frontend/src/views/dataset/add/AddExcel.vue index cbb3ec7d05..3b2a42200c 100644 --- a/frontend/src/views/dataset/add/AddExcel.vue +++ b/frontend/src/views/dataset/add/AddExcel.vue @@ -324,7 +324,7 @@ export default { editType: this.param.editType ? this.param.editType : 0 } } - if(new Set(sheetFileMd5).size !== sheetFileMd5.length){ + if(new Set(sheetFileMd5).size !== sheetFileMd5.length && !this.param.tableId){ this.$confirm(this.$t('dataset.merge_msg'), this.$t('dataset.merge_title'), { confirmButtonText: this.$t('dataset.merge'), cancelButtonText: this.$t('dataset.no_merge'),