正在显示
1 个修改的文件
包含
57 行增加
和
3 行删除
| @@ -195,6 +195,11 @@ public class ExcelUtil<T> | @@ -195,6 +195,11 @@ public class ExcelUtil<T> | ||
| 195 | public Class<T> clazz; | 195 | public Class<T> clazz; |
| 196 | 196 | ||
| 197 | /** | 197 | /** |
| 198 | + * 需要显示列属性 | ||
| 199 | + */ | ||
| 200 | + public String[] includeFields; | ||
| 201 | + | ||
| 202 | + /** | ||
| 198 | * 需要排除列属性 | 203 | * 需要排除列属性 |
| 199 | */ | 204 | */ |
| 200 | public String[] excludeFields; | 205 | public String[] excludeFields; |
| @@ -205,10 +210,19 @@ public class ExcelUtil<T> | @@ -205,10 +210,19 @@ public class ExcelUtil<T> | ||
| 205 | } | 210 | } |
| 206 | 211 | ||
| 207 | /** | 212 | /** |
| 213 | + * 仅在Excel中显示列属性 | ||
| 214 | + * | ||
| 215 | + * @param fields 列属性名 示例[单个"name"/多个"id","name"] | ||
| 216 | + */ | ||
| 217 | + public void showColumn(String... fields) | ||
| 218 | + { | ||
| 219 | + this.includeFields = fields; | ||
| 220 | + } | ||
| 221 | + | ||
| 222 | + /** | ||
| 208 | * 隐藏Excel中列属性 | 223 | * 隐藏Excel中列属性 |
| 209 | * | 224 | * |
| 210 | * @param fields 列属性名 示例[单个"name"/多个"id","name"] | 225 | * @param fields 列属性名 示例[单个"name"/多个"id","name"] |
| 211 | - * @throws Exception | ||
| 212 | */ | 226 | */ |
| 213 | public void hideColumn(String... fields) | 227 | public void hideColumn(String... fields) |
| 214 | { | 228 | { |
| @@ -1488,10 +1502,41 @@ public class ExcelUtil<T> | @@ -1488,10 +1502,41 @@ public class ExcelUtil<T> | ||
| 1488 | List<Field> tempFields = new ArrayList<>(); | 1502 | List<Field> tempFields = new ArrayList<>(); |
| 1489 | tempFields.addAll(Arrays.asList(clazz.getSuperclass().getDeclaredFields())); | 1503 | tempFields.addAll(Arrays.asList(clazz.getSuperclass().getDeclaredFields())); |
| 1490 | tempFields.addAll(Arrays.asList(clazz.getDeclaredFields())); | 1504 | tempFields.addAll(Arrays.asList(clazz.getDeclaredFields())); |
| 1505 | + if (StringUtils.isNotEmpty(includeFields)) | ||
| 1506 | + { | ||
| 1507 | + for (Field field : tempFields) | ||
| 1508 | + { | ||
| 1509 | + if (ArrayUtils.contains(this.includeFields, field.getName()) || field.isAnnotationPresent(Excels.class)) | ||
| 1510 | + { | ||
| 1511 | + addField(fields, field); | ||
| 1512 | + } | ||
| 1513 | + } | ||
| 1514 | + } | ||
| 1515 | + else if (StringUtils.isNotEmpty(excludeFields)) | ||
| 1516 | + { | ||
| 1491 | for (Field field : tempFields) | 1517 | for (Field field : tempFields) |
| 1492 | { | 1518 | { |
| 1493 | if (!ArrayUtils.contains(this.excludeFields, field.getName())) | 1519 | if (!ArrayUtils.contains(this.excludeFields, field.getName())) |
| 1494 | { | 1520 | { |
| 1521 | + addField(fields, field); | ||
| 1522 | + } | ||
| 1523 | + } | ||
| 1524 | + } | ||
| 1525 | + else | ||
| 1526 | + { | ||
| 1527 | + for (Field field : tempFields) | ||
| 1528 | + { | ||
| 1529 | + addField(fields, field); | ||
| 1530 | + } | ||
| 1531 | + } | ||
| 1532 | + return fields; | ||
| 1533 | + } | ||
| 1534 | + | ||
| 1535 | + /** | ||
| 1536 | + * 添加字段信息 | ||
| 1537 | + */ | ||
| 1538 | + public void addField(List<Object[]> fields, Field field) | ||
| 1539 | + { | ||
| 1495 | // 单注解 | 1540 | // 单注解 |
| 1496 | if (field.isAnnotationPresent(Excel.class)) | 1541 | if (field.isAnnotationPresent(Excel.class)) |
| 1497 | { | 1542 | { |
| @@ -1517,17 +1562,26 @@ public class ExcelUtil<T> | @@ -1517,17 +1562,26 @@ public class ExcelUtil<T> | ||
| 1517 | Excel[] excels = attrs.value(); | 1562 | Excel[] excels = attrs.value(); |
| 1518 | for (Excel attr : excels) | 1563 | for (Excel attr : excels) |
| 1519 | { | 1564 | { |
| 1520 | - if (!ArrayUtils.contains(this.excludeFields, field.getName() + "." + attr.targetAttr()) | 1565 | + if (StringUtils.isNotEmpty(includeFields)) |
| 1566 | + { | ||
| 1567 | + if (ArrayUtils.contains(this.includeFields, field.getName() + "." + attr.targetAttr()) | ||
| 1521 | && (attr != null && (attr.type() == Type.ALL || attr.type() == type))) | 1568 | && (attr != null && (attr.type() == Type.ALL || attr.type() == type))) |
| 1522 | { | 1569 | { |
| 1523 | field.setAccessible(true); | 1570 | field.setAccessible(true); |
| 1524 | fields.add(new Object[] { field, attr }); | 1571 | fields.add(new Object[] { field, attr }); |
| 1525 | } | 1572 | } |
| 1526 | } | 1573 | } |
| 1574 | + else | ||
| 1575 | + { | ||
| 1576 | + if (!ArrayUtils.contains(this.excludeFields, field.getName() + "." + attr.targetAttr()) | ||
| 1577 | + && (attr != null && (attr.type() == Type.ALL || attr.type() == type))) | ||
| 1578 | + { | ||
| 1579 | + field.setAccessible(true); | ||
| 1580 | + fields.add(new Object[] { field, attr }); | ||
| 1581 | + } | ||
| 1527 | } | 1582 | } |
| 1528 | } | 1583 | } |
| 1529 | } | 1584 | } |
| 1530 | - return fields; | ||
| 1531 | } | 1585 | } |
| 1532 | 1586 | ||
| 1533 | /** | 1587 | /** |
-
请 注册 或 登录 后发表评论