Java poi通过反射动态修改@Excel等注解属性
@Entity
@Table(name = "test")
@Data
public class Test {
private static final long serialVersionUID = 1L;
@Excel(name = "test")
private String testColumn;
}
private void setExcelAnnotationValue(String annotatedColumnName, String annotationFieldName, String newAnnotationFieldValue){
try{
Class<TTechnologyPointInfoEntity> tTechnologyPointInfoEntity = TTechnologyPointInfoEntity.class;
Field tjTotalPointField = tTechnologyPointInfoEntity.getDeclaredField(annotatedColumnName);
Excel excel = tjTotalPointField.getAnnotation(Excel.class);
InvocationHandler excelInvocationHandler = Proxy.getInvocationHandler(excel);
Field excelInvocationHandlerField = excelInvocationHandler.getClass().getDeclaredField("memberValues");
excelInvocationHandlerField.setAccessible(true);
Map tjTotalPointExcelFieldMap = (Map) excelInvocationHandlerField.get(excelInvocationHandler);
tjTotalPointExcelFieldMap.put(annotationFieldName, newAnnotationFieldValue);
} catch (Exception e) {
e.printStackTrace();
}
}