【java】解决EasyExcel读取InputStream时解析不到excel文件类型的问题

正常利用EasyExcel读取excel中sheet时会调用如下接口:

public static ExcelReaderBuilder read(String pathName, ReadListener readListener) {
        return read((String)pathName, (Class)null, readListener);
    }

    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;
    }

  但是EasyExcel还有个读取InputStream的方法,但是这里是没有包含文件类型的信息的,先看接口源码:

 public static ExcelReaderBuilder read(InputStream inputStream) {
        return read((InputStream)inputStream, (Class)null, (ReadListener)null);
    }

    public static ExcelReaderBuilder read(InputStream inputStream, ReadListener readListener) {
        return read((InputStream)inputStream, (Class)null, readListener);
    }

    public static ExcelReaderBuilder read(InputStream inputStream, Class head, ReadListener readListener) {
        ExcelReaderBuilder excelReaderBuilder = new ExcelReaderBuilder();
        excelReaderBuilder.file(inputStream);
        if (head != null) {
            excelReaderBuilder.head(head);
        }

        if (readListener != null) {
            excelReaderBuilder.registerReadListener(readListener);
        }

        return excelReaderBuilder;
    }

  因此,需要在调用时,额外指定下excel文件类型,调用参考举例:

EasyExcel.read(createInputSream(), null, listener).excelType(ExcelTypeEnum.XLSX).sheet(sheetName).doRead();

 createInputSream()接口返回一个InputStream实例

 

posted on 2024-06-23 21:12  清清飞扬  阅读(552)  评论(0)    收藏  举报