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