easyexcel导入

我想导入excel,这个excel里所有的字段都是一个对象的,想请问一下用easyexcel怎么能把它读成一个对象

img


//UserExcelModel.java

@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserExcelModel {
    @ExcelProperty("用户名")
    private String userName;

    @ExcelProperty("显示名")
    private String showName;
}



//导入代码
try{
            AnalysisEventListener<UserExcelModel> listener =
                    EasyExcelUtils.getListener(this::addUsers, 10000);
            EasyExcelFactory.read(new BufferedInputStream(inputStream), UserExcelModel.class,listener).sheet().doRead();
            return true;
        }
        catch (Exception e){
            log.error("用户导入发生异常", e);
            return false;
        }
        finally {
            if(inputStream != null){
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }


//EasyExcelUtils.java
public class EasyExcelUtils {
    public static <T> AnalysisEventListener<T> getListener(Consumer<List<T>> consumer,int threshold){
        return new AnalysisEventListener<T>() {
            /**
             * 存储数据集合
             */
            private List<T> list = new LinkedList<T>();
            /**
             * 这个每一条数据解析都会调用一次
             * @param t
             * @param analysisContext
             */
            @Override
            public void invoke(T t, AnalysisContext analysisContext) {
                //EasyExcel逐行读取并解析
                list.add(t);
                if (list.size() == threshold){
                    //已解析数据行数超过threshold,先处理并清空存储数据集合,以免数据量过大造成内存溢出
                    consumer.accept(list);
                    list.clear();
                }

            }

            /**
             * 所有数据解析完成 自动调用此方法
             * @param analysisContext
             */
            @Override
            public void doAfterAllAnalysed(AnalysisContext analysisContext) {
                if (list.size()>0){
                    consumer.accept(list);
                }
            }
        };
    }

}