easypoi-通过反射动态修改表格抬头

实体类:

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

效果:

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值