在用java导出Excel的时候,表头不能写死,而是根据情况变化的。
实体类如下:
public class EquSysExportNoChainVo {
@Excel(name = "")
private String thisValue; //当前值
}
给实体类的@Excel的name赋值的方法如下:
Field field = clazz.getDeclaredField(fieldName);
Class clazz = EnergyExportVo.class;//实体类class
String 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);
// 获取 memberValues
Map<String, Object> memberValues = (Map<String, Object>) hField.get(h);
memberValues.put("name", StringUtils.isNotBlank(name) ? name : "");