支持自定义隐藏Excel属性列
This commit is contained in:
		
							parent
							
								
									bc8b5f1079
								
							
						
					
					
						commit
						7cc9d17424
					
				| @ -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)) | ||||
|             if (!ArrayUtils.contains(this.excludeFields, field.getName())) | ||||
|             { | ||||
|                 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 (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; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 RuoYi
						RuoYi