package com.taover.bazhuayun.analysis.common.exceldeal; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import java.util.Map.Entry; public class ExcelAnnoParser implements ExcelParser{ public static final String FIELD_NAME_ORIGIN_DATA = "originData"; @Override public List parse(List> fieldData, Class beanClass) throws Exception { //读取文件 if(fieldData.isEmpty()) { return new ArrayList(); } //表头解析 ExcelHeaderParser headerParser = new ExcelHeaderAnnoParser(); ExcelHeaderResult headerParserResult = headerParser.parse(fieldData.get(0), beanClass); //数据注入 Constructor cons = beanClass.getDeclaredConstructor(); cons.setAccessible(true); List data = new ArrayList(fieldData.size()); for(int i=1; i reflect : headerParserResult.getHeaderNameMap().entrySet()) { Field field = reflect.getKey(); Integer dataIndex = reflect.getValue(); if(field == null || dataIndex == null || dataIndex >= fieldData.size()) { continue; } field.set(item, fieldData.get(i).get(dataIndex)); } for(Field reflect: headerParserResult.getOriginDataFieldList()) { reflect.set(item, fieldData.get(i)); } data.add(item); } return data; } }