RuoYi
2022-07-21 ef76b0c2d281a2aa649ccc0bfe99fd85c570b916
支持自定义隐藏Excel属性列
已修改1个文件
20 ■■■■■ 文件已修改
src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
@@ -22,6 +22,7 @@
import java.util.UUID;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.RegExUtils;
import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import org.apache.poi.hssf.usermodel.HSSFPicture;
@@ -163,9 +164,25 @@
     */
    public Class<T> clazz;
    /**
     * 需要排除列属性
     */
    public String[] excludeFields;
    public ExcelUtil(Class<T> clazz)
    {
        this.clazz = clazz;
    }
    /**
     * 隐藏Excel中列属性
     *
     * @param fields 列属性名 示例[单个"name"/多个"id","name"]
     * @throws Exception
     */
    public void hideColumn(String... fields)
    {
        this.excludeFields = fields;
    }
    public void init(List<T> list, String sheetName, String title, Type type)
@@ -1202,6 +1219,8 @@
        tempFields.addAll(Arrays.asList(clazz.getDeclaredFields()));
        for (Field field : tempFields)
        {
            if (!ArrayUtils.contains(this.excludeFields, field.getName()))
            {
            // 单注解
            if (field.isAnnotationPresent(Excel.class))
            {
@@ -1228,6 +1247,7 @@
                }
            }
        }
        }
        return fields;
    }