为什么指定index的时候可以正常映射到数据,指定value就都是null。我也换了jar的版本,最新的以及以前的版本,都试了,还是不行。 请问是什么原因?这是个bug吗
我用的版本是 1.1.2-beta5
为什么指定index的时候可以正常映射到数据,指定value就都是null。我也换了jar的版本,最新的以及以前的版本,都试了,还是不行。 请问是什么原因?这是个bug吗
我用的版本是 1.1.2-beta5
图片是指定了index,是可以正常映射到数据的。 如果去掉index的配置,只保留value的属性配置,就全部是null
具体的读取excel使用的是如下方式:
使用说明那里说是可以只指定value,不需要指定index就可以映射到javaBean的,但是我试了也是不可以,跟踪了代码,发现解析的时候还是需要index的,如果没有index,默认是个9999
我也是这个情况。不修复很麻烦 还要自己一个个输入index
另外还有个问题。data格式化format成("yyyy/MM/dd) 根本没用。依旧是date格式的时间戳
我的也是这个问题
这个问题确实存在,没有人修复了吗
我也遇到 自己实在没辙 自己 用反射 把数据 映射过去 ` package com.thermofisher.dsc.amanda.common.excel.listener;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.thermofisher.dsc.amanda.common.crud.Util; import com.thermofisher.dsc.amanda.common.excel.model.ITSCARCache; import com.thermofisher.dsc.amanda.common.excel.model.Validate; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import java.lang.reflect.Field; import java.text.SimpleDateFormat; import java.util.*;
/**
@author wenjie.yang on 4/3/2019.
*/
@Slf4j
public class ExcelListener
private final LinkedHashMap<String,String> TITLE_FILED = new LinkedHashMap<>(); private final HashMap<String,String> TITLE = new HashMap<>(); /**
public ExcelListener(Class listenerClazz,boolean isIndex) { if (!isIndex){ Field[] fields = listenerClazz.getDeclaredFields(); for (Field field:fields){ ExcelProperty excelProperty = field.getDeclaredAnnotationsByType(ExcelProperty.class)[0]; TITLE.put(excelProperty.value()[0],field.getName()); } } this.isIndex = isIndex; this.listenerClazz = listenerClazz; }
@Override
public void invoke(Object object, AnalysisContext context) {
Integer rowNum = context.getCurrentRowNum();
if (!isIndex){
List
private void initMapKeys(List
private Map<String,String> createMapData(List
private boolean isIntTitle(String key){ if ("amDisc".equals(key) || "rmDisc".equals(key)|| "sdDisc".equals(key)){ return true; } return false; }
private LinkedHashMap<String,String> copyMap(){ LinkedHashMap<String,String> linkedHashMap = new LinkedHashMap<>(); TITLE_FILED.forEach((k,v)->linkedHashMap.put(k,null)); return linkedHashMap; }
private String dateFormat(String hssDate){
if (hssDate==null) return null; Double va ; try{ va = Double.valueOf(hssDate); }catch (NumberFormatException e){ return null; } Date date = HSSFDateUtil.getJavaDate(va, false); SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss" ); String date2Str = sdf.format(date); return date2Str; }
@Override public void doAfterAllAnalysed(AnalysisContext context) { // datas.clear();//解析结束销毁不用的资源 }
private Class getThisClass(){ return Util.getActualArgumentType(this.getClass(), 0); }
public void clear() {
datas.clear();
}
public List
使用最新版本还是不行,why?