RuoYi
2024-11-07 f381ce3fe1dc281b49bbaaa4d4a5d496630eae5d
支持自定义显示Excel属性列
已修改1个文件
60 ■■■■■ 文件已修改
src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
@@ -195,6 +195,11 @@
    public Class<T> clazz;
    /**
     * 需要显示列属性
     */
    public String[] includeFields;
    /**
     * 需要排除列属性
     */
    public String[] excludeFields;
@@ -205,10 +210,19 @@
    }
    /**
     * 仅在Excel中显示列属性
     *
     * @param fields 列属性名 示例[单个"name"/多个"id","name"]
     */
    public void showColumn(String... fields)
    {
        this.includeFields = fields;
    }
    /**
     * 隐藏Excel中列属性
     *
     * @param fields 列属性名 示例[单个"name"/多个"id","name"]
     * @throws Exception
     */
    public void hideColumn(String... fields)
    {
@@ -1488,9 +1502,40 @@
        List<Field> tempFields = new ArrayList<>();
        tempFields.addAll(Arrays.asList(clazz.getSuperclass().getDeclaredFields()));
        tempFields.addAll(Arrays.asList(clazz.getDeclaredFields()));
        if (StringUtils.isNotEmpty(includeFields))
        {
            for (Field field : tempFields)
            {
                if (ArrayUtils.contains(this.includeFields, field.getName()) || field.isAnnotationPresent(Excels.class))
                {
                    addField(fields, field);
                }
            }
        }
        else if (StringUtils.isNotEmpty(excludeFields))
        {
        for (Field field : tempFields)
        {
            if (!ArrayUtils.contains(this.excludeFields, field.getName()))
                {
                    addField(fields, field);
                }
            }
        }
        else
        {
            for (Field field : tempFields)
            {
                addField(fields, field);
            }
        }
        return fields;
    }
    /**
     * 添加字段信息
     */
    public void addField(List<Object[]> fields, Field field)
            {
                // 单注解
                if (field.isAnnotationPresent(Excel.class))
@@ -1517,6 +1562,17 @@
                    Excel[] excels = attrs.value();
                    for (Excel attr : excels)
                    {
                if (StringUtils.isNotEmpty(includeFields))
                {
                    if (ArrayUtils.contains(this.includeFields, field.getName() + "." + attr.targetAttr())
                            && (attr != null && (attr.type() == Type.ALL || attr.type() == type)))
                    {
                        field.setAccessible(true);
                        fields.add(new Object[] { field, attr });
                    }
                }
                else
                {
                        if (!ArrayUtils.contains(this.excludeFields, field.getName() + "." + attr.targetAttr())
                                && (attr != null && (attr.type() == Type.ALL || attr.type() == type)))
                        {
@@ -1526,8 +1582,6 @@
                    }
                }
            }
        }
        return fields;
    }
    /**