excel文件校验工具类
package com.hjy.test.common.util;
import org.apache.poi.poifs.filesystem.FileMagic;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.multipart.MultipartFile;
import java.io.BufferedInputStream;
import java.util.Objects;
public class FileUtil {
private static final Logger LOGGER = LoggerFactory.getLogger(FileUtil.class);
private static final String XLS = "xls";
private static final String XLSX = "xlsx";
public static boolean isExcelFile(MultipartFile file) {
if (file == null || file.isEmpty()) {
LOGGER.error("FileUtil.isExcelFile,导入文件不能为空!", file);
return false;
}
String filename = file.getOriginalFilename();
if (filename == null) {
LOGGER.error("FileUtil.isExcelFile,导入文件不合法!", filename);
return false;
}
String suffix = filename.substring(filename.lastIndexOf(".") + 1);
if (!XLS.equals(suffix) && !XLSX.equals(suffix)) {
LOGGER.error("FileUtil.isExcelFile,文件格式不正确 ", suffix);
return false;
}
try {
BufferedInputStream bis = new BufferedInputStream(file.getInputStream());
FileMagic fileMagic = FileMagic.valueOf(bis);
if (Objects.equals(fileMagic, FileMagic.OLE2) || Objects.equals(fileMagic, FileMagic.OOXML)) {
return true;
}
LOGGER.error("FileUtil.isExcelFile,文件格式不正确 ", suffix);
} catch (Exception e) {
LOGGER.error("FileUtil.isExcelFile,校验excel文件失败 ", e);
}
return false;
}
}