在用java导出Excel的时候,表头不能写死,而是根据情况变化的。
实体类如下:
public class EquSysExportNoChainVo {@Excel(name = "")private String thisValue; //当前值
}
给实体类的@Excel的name赋值的方法如下:
Field field = clazz.getDeclaredField(fieldName);Class clazz = EnergyExportVo.class;//实体类classString name = "能耗量(t)";Excel excelInterface = field.getAnnotation(Excel.class);//@Excel注解InvocationHandler h = Proxy.getInvocationHandler(excelInterface);// 获取 AnnotationInvocationHandler 的 memberValues 字段Field hField = h.getClass().getDeclaredField("memberValues");// 因为字段是 private 修饰,所以要打开权限hField.setAccessible(true);// 获取 memberValuesMap<String, Object> memberValues = (Map<String, Object>) hField.get(h);memberValues.put("name", StringUtils.isNotBlank(name) ? name : "");