实体类:
public class ExportPlanDetailDto extends BaseRowModel implements Serializable { @Excel(name = "部门", width = 15) private String deptName; @Excel(name = "工作项目" , width = 25) private String taskTitle; @Excel(name = "季度目标", width = 50,height = 50) private List<String> aimList;}
方法调用放在导出方法需要的位置
通过反射修改表抬头:
/** * @param vo 页面导出参数 * @return * @description: 反射修改表头详细信息 * @author hyh * @date 2022/7/5 11:24 */ private void upDateTitle(PlanReqVo vo) throws NoSuchFieldException, IllegalAccessException { // 获取目标实体类的目标字段 Field field = ExportPlanDetailDto.class.getDeclaredField("aimList"); // 获取该字段的注解 Excel annotation = field.getAnnotation(Excel.class); // 获取Excel注解所持有的 InvocationHandler InvocationHandler handler = Proxy.getInvocationHandler(annotation); Field hFile = handler.getClass().getDeclaredField("memberValues"); // 设值私有可访问 hFile.setAccessible(true); Map<Object, Object> map = (Map<Object, Object>) hFile.get(handler); //获取第一栏值-计划类型: String planName=vo.getPlanType()==1 ? "月计划" : (vo.getPlanType() == 2 ? "季度计划" : "年计划"); 《---------此处采用三元运算符判断值,根据情况------------》 //季度或月份 String value=null; if (vo.getPlanType() != 3) { value=vo.getPlanType()==1?vo.getTypeValue()+"":vo.getTypeValue()+""; } // 获取配置信息 String nameTitle=vo.getTypeYear()+"年"+(ObjectUtils.isEmpty(vo.getTypeValue())?"":"第"+value)+planName+"目标"; // 修改属性值 map.put("name", nameTitle); }
效果:
