java通过反射组装EXCEL入库对象(解决EXCEL列顺序错列)

public static List<CollectionRecordInfo> assembly360ObjectInfo(List<List<Object>> list) {
        // 对象集合
        List<CollectionRecordInfo> recordInfoList = new ArrayList();
        // 第一行定义标题顺序
        List<Object> titleRow = list.get(0);

        // 需要入库的字段
        // CollectionRecordInfo实体类,externalCode类里面的属性
        Field externalCode = ReflectionUtils.findField(CollectionRecordInfo.class, "externalCode"); 
        Field contactResult = ReflectionUtils.findField(CollectionRecordInfo.class, "contactResult");
        Field actionType = ReflectionUtils.findField(CollectionRecordInfo.class, "actionType");
        Field dates = ReflectionUtils.findField(CollectionRecordInfo.class, "dates");
        // 和excel列反射关系  offer_req_no EXCEL的列名
        Map<String, Field> titleRefFiled = new HashMap<>();
        titleRefFiled.put("offer_req_no", externalCode);
        titleRefFiled.put("code_name", contactResult);
        titleRefFiled.put("type", actionType);
        titleRefFiled.put("act_date", dates);

        //遍历除第一行以外的Excel表格中的值
        for (int i = 1; i < list.size(); i++) {
            CollectionRecordInfo recordInfo = new CollectionRecordInfo();
            List<Object> rows = list.get(i);
            // 遍历当前行所对应的列
            for (int cellIndex = 0; cellIndex < rows.size(); cellIndex++) {
                String value = (String) rows.get(cellIndex);
                Field field = titleRefFiled.get(titleRow.get(cellIndex));
                if (field == null) {
                    continue;
                }
                if (field.getName().equals("dates")) {
                    // 时间特殊处理:2020-09-21-> 2020-09-21 00:00:00
                    String datesValue = value + ReminderConstant.TIME_VALUE;
                    ReflectionUtils.setField(field, recordInfo, datesValue);
                } else {
                    ReflectionUtils.setField(field, recordInfo, value);
                }
            }
            // 公共字段:合作公司/导入人/导入时间/催记来源
            recordInfo.setCollectionAgency(ReminderConstant.HZJG_360);
            recordInfo.setImportPerson(ReminderConstant.IMPORT_PERSON);
            recordInfo.setImportDate(FormatDate.formatTime(new Date()));
            recordInfo.setActionCode(ReminderConstant.CJ_HZJG);
            recordInfoList.add(recordInfo);
        }
        return recordInfoList;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值