|  | @@ -22,6 +22,7 @@ import java.util.Set;
 | 
	
		
			
				|  |  |  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,11 +164,27 @@ public class ExcelUtil<T>
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  |      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)
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |          if (list == null)
 | 
	
	
		
			
				|  | @@ -1202,30 +1219,33 @@ public class ExcelUtil<T>
 | 
	
		
			
				|  |  |          tempFields.addAll(Arrays.asList(clazz.getDeclaredFields()));
 | 
	
		
			
				|  |  |          for (Field field : tempFields)
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | -            // 单注解
 | 
	
		
			
				|  |  | -            if (field.isAnnotationPresent(Excel.class))
 | 
	
		
			
				|  |  | -            {
 | 
	
		
			
				|  |  | -                Excel attr = field.getAnnotation(Excel.class);
 | 
	
		
			
				|  |  | -                if (attr != null && (attr.type() == Type.ALL || attr.type() == type))
 | 
	
		
			
				|  |  | -                {
 | 
	
		
			
				|  |  | -                    field.setAccessible(true);
 | 
	
		
			
				|  |  | -                    fields.add(new Object[] { field, attr });
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            // 多注解
 | 
	
		
			
				|  |  | -            if (field.isAnnotationPresent(Excels.class))
 | 
	
		
			
				|  |  | +            if (!ArrayUtils.contains(this.excludeFields, field.getName()))
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  | -                Excels attrs = field.getAnnotation(Excels.class);
 | 
	
		
			
				|  |  | -                Excel[] excels = attrs.value();
 | 
	
		
			
				|  |  | -                for (Excel attr : excels)
 | 
	
		
			
				|  |  | +                // 单注解
 | 
	
		
			
				|  |  | +                if (field.isAnnotationPresent(Excel.class))
 | 
	
		
			
				|  |  |                  {
 | 
	
		
			
				|  |  | +                    Excel attr = field.getAnnotation(Excel.class);
 | 
	
		
			
				|  |  |                      if (attr != null && (attr.type() == Type.ALL || attr.type() == type))
 | 
	
		
			
				|  |  |                      {
 | 
	
		
			
				|  |  |                          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)
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        if (attr != null && (attr.type() == Type.ALL || attr.type() == type))
 | 
	
		
			
				|  |  | +                        {
 | 
	
		
			
				|  |  | +                            field.setAccessible(true);
 | 
	
		
			
				|  |  | +                            fields.add(new Object[] { field, attr });
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return fields;
 |