diff --git a/devttl-common/src/main/java/com/devttl/common/utils/poi/ExcelUtil.java b/devttl-common/src/main/java/com/devttl/common/utils/poi/ExcelUtil.java index 2d6c8b841..4a0445f12 100644 --- a/devttl-common/src/main/java/com/devttl/common/utils/poi/ExcelUtil.java +++ b/devttl-common/src/main/java/com/devttl/common/utils/poi/ExcelUtil.java @@ -130,12 +130,12 @@ public class ExcelUtil { /** * 对象的子列表方法 */ - private Map subMethods = new HashMap<>(); + private Map subMethods; /** * 对象的子列表属性 */ - private Map> subFieldsMap = new HashMap<>(); + private Map> subFieldsMap; /** * 统计列表 @@ -200,7 +200,10 @@ public class ExcelUtil { if (StringUtils.isNotEmpty(title)) { int titleLastCol = this.fields.size() - 1; if (isSubList()) { - titleLastCol = titleLastCol + subFieldsMap.values().size() - 1; + for (List currentSubFields : subFieldsMap.values()) + { + titleLastCol = titleLastCol + currentSubFields.size() - 1; + } } Row titleRow = sheet.createRow(rownum == 0 ? rownum++ : 0); titleRow.setHeightInPoints(30); @@ -598,9 +601,9 @@ public class ExcelUtil { if (Collection.class.isAssignableFrom(field.getType())) { try { Collection subList = (Collection) getTargetValue(vo, field, excel); + List currentSubFields = subFieldsMap.get(field.getName()); if (subList != null && !subList.isEmpty()) { int subIndex = 0; - List currentSubFields = subFieldsMap.get(field.getName()); for (Object subVo : subList) { Row subRow = sheet.getRow(currentRowNum + subIndex); if (subRow == null) { @@ -614,8 +617,8 @@ public class ExcelUtil { } subIndex++; } - column += currentSubFields.size(); } + column += currentSubFields.size(); } catch (Exception e) { log.error("填充集合数据失败", e); } @@ -1275,6 +1278,8 @@ public class ExcelUtil { public List getFields() { List fields = new ArrayList(); List tempFields = new ArrayList<>(); + subFieldsMap = new HashMap<>(); + subMethods = new HashMap<>(); tempFields.addAll(Arrays.asList(clazz.getSuperclass().getDeclaredFields())); tempFields.addAll(Arrays.asList(clazz.getDeclaredFields())); if (StringUtils.isNotEmpty(includeFields)) {