forked from github/dataease
fix: 解析excel失败
This commit is contained in:
parent
af79e725a3
commit
1e67e6669c
@ -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));
|
||||
}
|
||||
}
|
||||
|
@ -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<String> tmp = new ArrayList<>(cellList);
|
||||
this.getData().add(tmp);
|
||||
|
@ -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'),
|
||||
|
Loading…
Reference in New Issue
Block a user