From 1330cdb8781c0ee4ff35b063b63b50092677422f Mon Sep 17 00:00:00 2001 From: jueyue Date: Wed, 22 Apr 2015 15:19:18 +0800 Subject: [PATCH] =?UTF-8?q?map=E7=9A=84list=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../excel/export/base/ExcelExportBase.java | 2 +- .../poi/excel/export/base/ExportBase.java | 18 +++++++++++++++ .../test/excel/test/ExcelExportForMap.java | 22 ++++++++++++++----- 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/base/ExcelExportBase.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/base/ExcelExportBase.java index 48db019..bbdbbcc 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/base/ExcelExportBase.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/base/ExcelExportBase.java @@ -91,7 +91,7 @@ public abstract class ExcelExportBase extends ExportBase { for (int k = indexKey, paramSize = excelParams.size(); k < paramSize; k++) { entity = excelParams.get(k); if (entity.getList() != null) { - Collection list = (Collection) entity.getMethod().invoke(t, new Object[] {}); + Collection list = getListCellValue(entity,t); int listC = 0; for (Object obj : list) { createListCells(patriarch, index + listC, cellNum, obj, entity.getList(), diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/base/ExportBase.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/base/ExportBase.java index 183269d..84cfb2f 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/base/ExportBase.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/base/ExportBase.java @@ -6,6 +6,7 @@ import java.lang.reflect.ParameterizedType; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.List; @@ -176,6 +177,23 @@ public class ExportBase { return value == null ? "" : value.toString(); } + /** + * 获取集合的值 + * @param entity + * @param obj + * @return + * @throws Exception + */ + public Collection getListCellValue(ExcelExportEntity entity, Object obj) throws Exception { + Object value; + if (obj instanceof Map) { + value = ((Map) obj).get(entity.getKey()); + } else { + value = (Collection) entity.getMethod().invoke(obj, new Object[] {}); + } + return (Collection) value; + } + /** * 注解到导出对象的转换 * diff --git a/easypoi-test/src/main/java/org/jeecgframework/poi/test/excel/test/ExcelExportForMap.java b/easypoi-test/src/main/java/org/jeecgframework/poi/test/excel/test/ExcelExportForMap.java index 67fb0d2..bb69c58 100644 --- a/easypoi-test/src/main/java/org/jeecgframework/poi/test/excel/test/ExcelExportForMap.java +++ b/easypoi-test/src/main/java/org/jeecgframework/poi/test/excel/test/ExcelExportForMap.java @@ -21,19 +21,31 @@ public class ExcelExportForMap { /** * Map 测试 */ - // @Test + @Test public void test() { try { List entity = new ArrayList(); entity.add(new ExcelExportEntity("姓名", "name")); entity.add(new ExcelExportEntity("性别", "sex")); + ExcelExportEntity excelentity = new ExcelExportEntity("学生", "students"); + List temp = new ArrayList(); + temp.add(new ExcelExportEntity("姓名", "name")); + temp.add(new ExcelExportEntity("性别", "sex")); + excelentity.setList(temp); + entity.add(excelentity); - List> list = new ArrayList>(); - Map map; + List> list = new ArrayList>(); + Map map; for (int i = 0; i < 10; i++) { - map = new HashMap(); + map = new HashMap(); map.put("name", "1" + i); map.put("sex", "2" + i); + + List> tempList = new ArrayList>(); + tempList.add(map); + tempList.add(map); + map.put("students", tempList); + list.add(map); } @@ -49,7 +61,7 @@ public class ExcelExportForMap { } } - @Test + //@Test public void testMany() { try { List entity = new ArrayList();