Poi导入Excel校验表头
Posted 默慊$
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Poi导入Excel校验表头相关的知识,希望对你有一定的参考价值。
我们在日常的开发过程中,poi导入数据要根据注解的列名和顺序进行识别,那么首先要校验模版的正确与否,即表头是否正确,然后才能开始数据和业务层面的校验,最近也是被这个东西烦的不行,解决后记录一下,一个是方便自己以后查看,也给其他兄弟分享下,节省时间,话不多说,直接上代码:
//仅作事列,可根据具体代码改造
public Result dataImport(MultipartFile file, HttpServletResponse response, HttpServletRequest request, UserDTO userDTO) throws Exception
//1、校验文件是否符合基本标准
if (ObjectUtils.isEmpty(file))
return Result.failed("请选择上传文件");
if(!file.getOriginalFilename().endsWith(".xlsx") &&
!file.getOriginalFilename().endsWith(".xls"))
return Result.failed("请选择excel文件上传");
//2、定义正确表头有序集合
List<String> list = new ArrayList<>();
Collections.addAll(list, "姓名", "手机号", "性别");
//3、开始校验
boolean headerFlag = checkExcelHeaders(file, list);
if (!headerFlag)
return Result.failed("上传失败,模板错误,请核对后重新上传");
/**
* 检查 Excel 文件表头信息
*
* @param file
* @param dataList
* @return
* @throws Exception
*/
public boolean checkExcelHeaders(MultipartFile file, List<String> dataList) throws Exception
byte [] byteArr=file.getBytes();
InputStream inputStream = new ByteArrayInputStream(byteArr);
Workbook workbook = new XSSFWorkbook(inputStream);
Sheet sheet = workbook.getSheetAt(0);
System.out.println(sheet.getLastRowNum());
//获取 excel 第一行数据(表头)
Row row = sheet.getRow(0);
//存放表头信息
List<String> headerList = new ArrayList<>();
//算下有多少列
int colCount = sheet.getRow(0).getLastCellNum();
System.out.println(colCount);
for (int j = 0; j < colCount; j++)
Cell cell = row.getCell(j);
String cellValue = cell.getStringCellValue().trim();
headerList.add(cellValue);
return dataList.equals(headerList);
通过有序集合的比较,就可以得出表头是否正确的结论啦,分享就到这里,有需要的兄弟快去试试吧!
以上是关于Poi导入Excel校验表头的主要内容,如果未能解决你的问题,请参考以下文章