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校验表头的主要内容,如果未能解决你的问题,请参考以下文章

poi解析excel表头不在一行

Easypoi excel导入时日期校验

java通过poi包导入Excel

poi解析excel 怎么读取表头

poi导出Excel报表多表头双层表头合并单元格

使用poi导出的excel怎么设置表头不动