1.展示界面
2.原理
通过Java反射,获取需要导出的指定类,从类中获取需要数据源的指定字段(即下拉框应该在哪个字段上),
再通过hutool工具包。里面有个方法可以为注解里面的元数据设置指定的值。
2.1 Hutool工具包
<dependency><groupId>cn.hutool</groupId><artifactId>hutool-core</artifactId><version>5.8.11</version></dependency>3.代码实现
在ExcelUtil里面
/** * 动态设置下拉框的值 * @param adjustClass 修改指定类(需要在导出Excel类里面的指定类) * @param combos 传入Combo的值 (下拉框的值,从数据库中查询) * @param fieldName 指定传入类的字段上面值 (需要下拉框的字段) */publicvoidsetFiledCombo(Class<T>adjustClass,String[]combos,StringfieldName){// 获取类的对象Field[]declaredFields=adjustClass.getDeclaredFields();for(inti=0;i<declaredFields.length;i++){FielddeclaredField=declaredFields[i];declaredField.setAccessible(true);if(declaredField.getAnnotation(Excel.class)==null)continue;if(declaredField.getName().equals(fieldName))// 给指定字段赋值AnnotationUtil.setValue(declaredField.getAnnotation(Excel.class),"combo",combos);}}4.如何使用
// 项目名(库中拿)List<String>projectName=Service.getProjectName();// 调整项List<String>costCollectType=Service2.getCostCollectType();ExcelUtil<自己的指定类>util=newExcelUtil<>(自己的指定类.class);// 设置字段调整项目名称util.setFiledCombo(自己的指定类.class,projectName.toArray(newString[0]),"下拉框的字段名");// 设置字段调整项目util.setFiledCombo(自己的指定类.class,costCollectType.toArray(newString[0]),"下拉框的字段名2");// 导出util.importTemplateExcel(response,"导出表的名字");5.总结
通过Java的类反射和Hutool工具包完成了对指定字段上的注解的元数据进行修改。如果有错误,麻烦指出,小弟不才,望跟佬学习。