java集成easyexcel的使用(二)(导入,包含完整工具类)

1、easyexcel导入,会使用到上一篇的EasyExcelUtil的工具类

 List<StockImeiChangeImport> imeiImportList = EasyExcelUtil.readEasyExcelData(file.getInputStream(), StockImeiChangeImport.class,1000);

2、主要用的EasyExcelUtil中的这个方法:

    /**
     * 读取Excel中文件
     * @param  inputStream 文件流,用完请自己关闭
     * @param  clazz 接收类,row到bean的映射类
     * @param  listSize 最大读取行数,超过listSize的将被丢弃。
     */
    public static <T> List<T> readEasyExcelData(InputStream inputStream, Class<T> clazz, int listSize) {
        List<T> ret = new ArrayList<>();

        //本地读取文件 并验证
        SyncReadListener syncReadListener = new SyncReadListener(){
            @Override
            public void invoke(Object object, AnalysisContext context) {
                if (super.getList().size() > listSize) {
                    //超过listSize行抛弃,节约内存。==》通过异常终止,会导致easyexcel抛出新的异常,不方便捕捉。所以只能通过类似自旋等待结束。
                    return;
                }

                //判断是否读取的是空行
                boolean addFlag = false;
                Class<?> aClass = object.getClass();
                try {
                    for (Field declaredField : aClass.getDeclaredFields()) {
                        declaredField.setAccessible(true);
                        Object o = declaredField.get(object);
                        if (o != null) {
                            addFlag = true;
                            //去除前后空格
                            if (o instanceof String) {
                                declaredField.set(object, o.toString().trim());
                            }
                        }
                    }
                } catch (IllegalAccessException e) {
                    throw new IllegalArgumentException(e);
                }

                if (addFlag) {
                    super.invoke(object, context);
                }
            }
        };

        ExcelReaderSheetBuilder sheet = EasyExcel.read(inputStream, clazz,syncReadListener).sheet();
        sheet.doRead();

        for (Object o : syncReadListener.getList()) {
            if (clazz.isInstance(o)) {
                ret.add(clazz.cast(o));
            }
        }

        return ret;
    }

3、对应的bean

   //@ExcelProperty("XXXXXX")注解里填写excel对应的列名
   
   @ExcelProperty("串号编号")
	private String ImeiNum;
	@ExcelProperty("串号内容")
	private String Imei;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

要成为码神的男人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值