fix(88389): 增加表头校验

This commit is contained in:
yjz
2024-08-12 11:19:52 +08:00
parent 37dc9816db
commit bc841a4821
2 changed files with 38 additions and 20 deletions
@@ -2053,11 +2053,7 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
if (name.contains(".xlsx")||name.contains(".xlsm")) {
workbook = WorkbookFactory.create(is);
} else {
if(MessageUtils.getLanguage().getValue().equals(LanguageEnum.CN.getValue())){
throw new JeroBootException("请导入正确模板!");
} else {
throw new JeroBootException("Please import the correct template");
}
templateError();
}
//得到一个工作表
Sheet sheet = workbook.getSheetAt(0);
@@ -2069,6 +2065,12 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
int cellLength = sheet.getRow(0).getPhysicalNumberOfCells();
// 验证模板表头是否正确
Row rowTitle = sheet.getRow(0);
// 校验表头
try {
checkTitle(sheet, titles);
} catch (Exception e) {
templateError();
}
// for (int i = 0; i < cellLength; i++) {
// if (rowTitle != null) {
// Cell cell = rowTitle.getCell(i);
@@ -2106,25 +2108,13 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
cell.setCellType(CellType.STRING);
String cellValue = cell.getStringCellValue();
if(!cellValue.contains("填写说明")){
if(MessageUtils.getLanguage().getValue().equals(LanguageEnum.CN.getValue())){
throw new JeroBootException("请导入正确模板!");
} else {
throw new JeroBootException("Please import the correct template");
}
templateError();
}
} else{
if(MessageUtils.getLanguage().getValue().equals(LanguageEnum.CN.getValue())){
throw new JeroBootException("请导入正确模板!");
} else {
throw new JeroBootException("Please import the correct template");
}
templateError();
}
}else{
if(MessageUtils.getLanguage().getValue().equals(LanguageEnum.CN.getValue())){
throw new JeroBootException("请导入正确模板!");
} else {
throw new JeroBootException("Please import the correct template");
}
templateError();
}
Map<String, Object> map = null;
@@ -2191,6 +2181,34 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
return list;
}
private static void templateError() {
if(MessageUtils.getLanguage().getValue().equals(LanguageEnum.CN.getValue())){
throw new JeroBootException("请导入正确模板!");
} else {
throw new JeroBootException("Please import the correct template");
}
}
private void checkTitle(Sheet sheet, String[] titles) {
Row row = sheet.getRow(0);
// 获取列数
int cellLength = row.getPhysicalNumberOfCells();
if (!Objects.isNull(sheet) && Objects.equals(cellLength, titles.length)){
for (int i = 0; i < titles.length; i++) {
String stringCellValue = row.getCell(i).getStringCellValue();
if (stringCellValue.startsWith("*")){
stringCellValue = stringCellValue.substring(1);
}
if (!Objects.equals(stringCellValue, titles[i])) {
templateError();
}
}
}else {
templateError();
}
}
/**
* 获取合并单元格的值
*