알리의 EasyExcel을 사용하여 Excel 형식 변환 예외를 보고하십시오. 'excelType'을 직접 지정해 볼 수 있습니다.

79. Ali의 EasyExcel을 사용하여 Excel 형식 변환 예외를 보고합니다. 'excelType'을 직접 지정할 수 있습니다.

1. 프로젝트 버전 확인 2.x인 경우 3.1.x 이상으로 대체 가능하며 자동으로 인식

검증없이 프로젝트는 2.x를 사용하고 버전 번호를 변경하면 많은 오래된 것을 인식할 수 없습니다.

프로젝트에서 사용하는 버전은 솔루션인 2.x입니다.

1、网上说是流的属性发生变化了,不是一个文件流,重新new了文件流还是报错  ----未解决
List<Object> objects = EasyExcel.read(new BufferedInputStream(inputStream), easyExcelExceptionUtil).sheet(sheetName.getSheetName()).doReadSync();

2、指定文件的类型    还是报错     ---未解决
List<Object> objects = EasyExcel.read(new BufferedInputStream(inputStream), easyExcelExceptionUtil).excelType(ExcelTypeEnum.XLS).sheet(sheetName.getSheetName()).doReadSync();

3、查看源码发现,read方法有好多种,决定更换读取方式,放置文件的路径  -- 解决
List<Object> objects = EasyExcel.read(caseUploadPath + dataImportDto.getFileUrl(), easyExcelExceptionUtil).sheet(sheetName.getSheetName()).doReadSync();
此时发现读取只能读取单个类型的文件xlsx 或者xls 中的一种
加上判断,用来区分文件类型
 根据文件来切割获取文件类型
String[] fileNameArr = file.getName().split("\\.");
List<Object> objects;
//				xls 或者 xlxs
if (ObjectUtil.equal(fileNameArr[1],"xls")){
    
    
    objects = EasyExcel.read(caseUploadPath + dataImportDto.getFileUrl(), easyExcelExceptionUtil).excelType(ExcelTypeEnum.XLS).sheet(sheetName.getSheetName()).doReadSync();
}else {
    
    
    objects = EasyExcel.read(caseUploadPath + dataImportDto.getFileUrl(), easyExcelExceptionUtil).sheet(sheetName.getSheetName()).doReadSync();
}

몇 가지 읽기 방법

    /**
     * Build excel the read
     *
     * @param pathName
     *            File path to read.
     * @param head
     *            Annotate the class for configuration information.
     * @param readListener
     *            Read listener.
     * @return Excel reader builder.
     */
    public static ExcelReaderBuilder read(String pathName, Class head, ReadListener readListener) {
    
    
        ExcelReaderBuilder excelReaderBuilder = new ExcelReaderBuilder();
        excelReaderBuilder.file(pathName);
        if (head != null) {
    
    
            excelReaderBuilder.head(head);
        }
        if (readListener != null) {
    
    
            excelReaderBuilder.registerReadListener(readListener);
        }
        return excelReaderBuilder;
    }

    /**
     * Build excel the read
     *
     * @param inputStream
     *            Input stream to read.
     * @return Excel reader builder.
     */
    public static ExcelReaderBuilder read(InputStream inputStream) {
    
    
        return read(inputStream, null, null);
    }

    /**
     * Build excel the read
     *
     * @param inputStream
     *            Input stream to read.
     * @param readListener
     *            Read listener.
     * @return Excel reader builder.
     */
    public static ExcelReaderBuilder read(InputStream inputStream, ReadListener readListener) {
    
    
        return read(inputStream, null, readListener);
    }

추천

출처blog.csdn.net/weixin_43987718/article/details/130171170