[alibaba/easyexcel]读取问题:当JavaModel中的ExcelProperty不指定index时,无法读取为相应的JavaModel

2024-06-20 237 views
2

Execel 不根据列号,而只根据头部来确定列相应的内容时,不指定index,如下

    /* 银行卡号 */
    @ExcelProperty(value = {"银行卡号", "bankCardNo"})
    private String      bankCardNo;

那么在生成ExcelHeadProperty的excelColumnPropertyMap1的时候,最后只会存在一个key为9999的键值对,即bean的最后一个ExcelProperty;虽然在columnPropertyList保存了所有ExcelProperty; 但在转换为bean的过程中TypeUtil,只使用excelColumnPropertyMap1的键值对(excelHeadProperty.getExcelColumnProperty(i)),这样导致所有的值均找不到ExcelColumnProperty,从而无法正确读取每个项的值:

TypeUtil.java
    public static Map getFieldValues(List<String> stringList, ExcelHeadProperty excelHeadProperty, Boolean use1904WindowDate) {
        Map map = new HashMap();
        for (int i = 0; i < stringList.size(); i++) {
            ExcelColumnProperty columnProperty = excelHeadProperty.getExcelColumnProperty(i);
            if (columnProperty != null) {
                Object value = TypeUtil.convert(stringList.get(i), columnProperty.getField(),
                    columnProperty.getFormat(), use1904WindowDate);
                if (value != null) {
                    map.put(columnProperty.getField().getName(),value);
                }
            }
        }
        return map;
    }

回答

8

读必须 指定index ,读不会去根据value去匹配标题的。

6

读必须 指定index ,读不会去根据value去匹配标题的。

是的,可能我有所误解,以为支持index动态不确定情况下不指定index,根据value动态转换为bean

4

哈哈 这个他注释没写清楚 一开始我也这么以为的 后来 看了下源码 感觉 思路不一样了