获取类中定义的excel导出字段列表

public class ExcelMap {
    
    
    public static List<ExcelExportEntity> getExportEntityList(Class t){
    
    
        List<ExcelExportEntity> list = new LinkedList<>();
        Field[] fields = t.getDeclaredFields();
        class innerCompar {
    
    
            private Field field;
            private Excel excel;
            private int orderNum;

            public int getOrderNum() {
    
    
                return orderNum;
            }

            public void setOrderNum(int orderNum) {
    
    
                this.orderNum = orderNum;
            }

            public Field getField() {
    
    
                return field;
            }

            public void setField(Field field) {
    
    
                this.field = field;
            }

            public Excel getExcel() {
    
    
                return excel;
            }

            public void setExcel(Excel excel) {
    
    
                this.excel = excel;
            }
        }
        List<innerCompar> excelList = new LinkedList<>();
        for (Field f :
                fields) {
    
    
            Excel excel = f.getAnnotation(Excel.class);
            if (excel != null) {
    
    
                excelList.add(new innerCompar() {
    
    {
    
    
                    setExcel(excel);
                    setField(f);
                    String s = excel.orderNum();
                    if (s != null) {
    
    
                        setOrderNum(Integer.valueOf(s));
                    }
                }});
            }
        }
        List<innerCompar> collect = excelList.stream().sorted(Comparator.comparing(innerCompar::getOrderNum)).collect(Collectors.toList());
        for (innerCompar c :
                collect) {
    
    
            Field f = c.getField();
            Excel excel = c.getExcel();
            String name = excel.name();
            String field = f.getName();
            Dict dict = f.getAnnotation(Dict.class);
            if (dict != null) {
    
    
                field += "_dictText";
            }
            ExcelExportEntity entity = new ExcelExportEntity(name, field);
            list.add(entity);
        }

        return list;
    }
}

类字段定义实例:

 @ApiModelProperty(value = "性别")
    @Dict(dicCode = "XB")
    @Excel(name = "性别", dicCode = "XB", orderNum = "10")
    private String xbm;

使用:

public ModelAndView exportXls(@RequestBody XueShengVo xueSheng) {
    
    
        。。。
        List<ExcelExportEntity> mapList = ExcelMap.getExportEntityList(XueShengVo.class);
        // Step.4 AutoPoi 导出Excel
        ModelAndView mv = new ModelAndView(new ExcelView());
        mv.addObject(NormalExcelConstants.FILE_NAME, "学生基本信息列表");
        mv.addObject(NormalExcelConstants.MAP_LIST, mapList);
        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("学生基本信息数据", "导出人:" + sysUser.getRealname(), "学生基本信息"));
        mv.addObject(NormalExcelConstants.DATA_LIST, list);
        return mv;
    }

猜你喜欢

转载自blog.csdn.net/wyljz/article/details/109097228