mirror of
				https://github.com/dromara/RuoYi-Vue-Plus.git
				synced 2025-11-04 08:13:44 +08:00 
			
		
		
		
	支持自定义隐藏Excel属性列
This commit is contained in:
		@@ -22,6 +22,7 @@ import java.util.Set;
 | 
				
			|||||||
import java.util.UUID;
 | 
					import java.util.UUID;
 | 
				
			||||||
import java.util.stream.Collectors;
 | 
					import java.util.stream.Collectors;
 | 
				
			||||||
import javax.servlet.http.HttpServletResponse;
 | 
					import javax.servlet.http.HttpServletResponse;
 | 
				
			||||||
 | 
					import org.apache.commons.lang3.ArrayUtils;
 | 
				
			||||||
import org.apache.commons.lang3.RegExUtils;
 | 
					import org.apache.commons.lang3.RegExUtils;
 | 
				
			||||||
import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
 | 
					import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
 | 
				
			||||||
import org.apache.poi.hssf.usermodel.HSSFPicture;
 | 
					import org.apache.poi.hssf.usermodel.HSSFPicture;
 | 
				
			||||||
@@ -163,11 +164,27 @@ public class ExcelUtil<T>
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    public Class<T> clazz;
 | 
					    public Class<T> clazz;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 需要排除列属性
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public String[] excludeFields;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public ExcelUtil(Class<T> clazz)
 | 
					    public ExcelUtil(Class<T> clazz)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        this.clazz = 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)
 | 
					    public void init(List<T> list, String sheetName, String title, Type type)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        if (list == null)
 | 
					        if (list == null)
 | 
				
			||||||
@@ -1202,30 +1219,33 @@ public class ExcelUtil<T>
 | 
				
			|||||||
        tempFields.addAll(Arrays.asList(clazz.getDeclaredFields()));
 | 
					        tempFields.addAll(Arrays.asList(clazz.getDeclaredFields()));
 | 
				
			||||||
        for (Field field : tempFields)
 | 
					        for (Field field : tempFields)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            // 单注解
 | 
					            if (!ArrayUtils.contains(this.excludeFields, field.getName()))
 | 
				
			||||||
            if (field.isAnnotationPresent(Excel.class))
 | 
					 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                Excel attr = field.getAnnotation(Excel.class);
 | 
					                // 单注解
 | 
				
			||||||
                if (attr != null && (attr.type() == Type.ALL || attr.type() == type))
 | 
					                if (field.isAnnotationPresent(Excel.class))
 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    field.setAccessible(true);
 | 
					 | 
				
			||||||
                    fields.add(new Object[] { field, attr });
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            // 多注解
 | 
					 | 
				
			||||||
            if (field.isAnnotationPresent(Excels.class))
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                Excels attrs = field.getAnnotation(Excels.class);
 | 
					 | 
				
			||||||
                Excel[] excels = attrs.value();
 | 
					 | 
				
			||||||
                for (Excel attr : excels)
 | 
					 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
 | 
					                    Excel attr = field.getAnnotation(Excel.class);
 | 
				
			||||||
                    if (attr != null && (attr.type() == Type.ALL || attr.type() == type))
 | 
					                    if (attr != null && (attr.type() == Type.ALL || attr.type() == type))
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        field.setAccessible(true);
 | 
					                        field.setAccessible(true);
 | 
				
			||||||
                        fields.add(new Object[] { field, attr });
 | 
					                        fields.add(new Object[] { field, attr });
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                // 多注解
 | 
				
			||||||
 | 
					                if (field.isAnnotationPresent(Excels.class))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    Excels attrs = field.getAnnotation(Excels.class);
 | 
				
			||||||
 | 
					                    Excel[] excels = attrs.value();
 | 
				
			||||||
 | 
					                    for (Excel attr : excels)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        if (attr != null && (attr.type() == Type.ALL || attr.type() == type))
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            field.setAccessible(true);
 | 
				
			||||||
 | 
					                            fields.add(new Object[] { field, attr });
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return fields;
 | 
					        return fields;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user