excel导入空行处理
作者:互联网
/**
* @param file 文件(通过解析文件的形式获取必填列)
*/
`
public static void isRequired(MultipartFile file) {
Workbook wb;
try {
wb=WorkbookFactory.create(file.getInputStream());
} catch (IOException | InvalidFormatException e) {
throw new com.ly.education.commons.exception.ServiceException(2, e.getMessage());
}
Sheet sheet = wb.getSheetAt(0);
//行数
int physicalNumberOfRows = sheet.getPhysicalNumberOfRows();
int lastRow = sheet.getLastRowNum();// 这种不会去除空格行
//拿到表头信息
Row titleRow = sheet.getRow(2);
//列数
short lastCell = titleRow.getLastCellNum();
StringBuilder failMessage = new StringBuilder();
String title ="错误信息:\r\n";
for (int index = 3; index <= lastRow; index++) {
Row row;
try {
row = sheet.getRow(index);
} catch (NullPointerException e) {
continue;
}
if(index == 149){
System.out.println("ss");
}
if(row == null){
// sheet.shiftRows(index+1,lastRow,-1);
failMessage.append("第").append(index+1).append("行无数据,请将本行删除,本行导入失败").append(";\r\n");
continue;
}
for (int column = 0; column<lastCell; column++){
//获取标题栏文字进行解析
Cell titleCell=Optional.ofNullable(titleRow.getCell(column)).orElse(null);
if (Objects.nonNull(titleCell)){
String titleValue = Optional.ofNullable(titleCell.getStringCellValue()).orElse("");
if (titleValue.contains("必填")){
Cell rowCell=row.getCell(column);
String value = Optional.ofNullable(cellValueTurn(rowCell)).orElse("");
if ("".equals(value.trim())){
failMessage.append("第").append(index+1).append("行")
.append("第").append(getCellNum(column+1)).append("列")
.append(titleCell)
.append("不能为空").append(";\r\n");
}
}
}
}
}
//返回错误信息
if (!"".equals(failMessage.toString())){
throw new ServiceException(522,title+failMessage);
}
}
`
标签:空行,index,sheet,column,excel,导入,failMessage,titleCell,append 来源: https://www.cnblogs.com/heavenTang/p/16664418.html