diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/CellValueServer.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/CellValueServer.java index b55b812..f47c7d4 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/CellValueServer.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/CellValueServer.java @@ -114,12 +114,17 @@ public class CellValueServer { Map excelParams, String titleString) throws Exception { ExcelImportEntity entity = excelParams.get(titleString); - Method setMethod = entity.getMethods() != null && entity.getMethods().size() > 0 ? entity - .getMethods().get(entity.getMethods().size() - 1) : entity.getMethod(); - Type[] ts = setMethod.getGenericParameterTypes(); - String xclass = ts[0].toString(); + String xclass = "class java.lang.Object"; + if (!(object instanceof Map)) { + Method setMethod = entity.getMethods() != null && entity.getMethods().size() > 0 ? entity + .getMethods().get(entity.getMethods().size() - 1) : entity.getMethod(); + Type[] ts = setMethod.getGenericParameterTypes(); + xclass = ts[0].toString(); + } Object result = getCellValue(xclass, cell, entity); - result = replaceValue(entity.getReplace(), result); + if (entity != null) { + result = replaceValue(entity.getReplace(), result); + } result = hanlderValue(dataHanlder, object, result, titleString); return getValueByType(xclass, result); } @@ -182,7 +187,7 @@ public class CellValueServer { } return result; } catch (Exception e) { - LOGGER.error(e.getMessage(),e); + LOGGER.error(e.getMessage(), e); throw new ExcelImportException(ExcelImportEnum.GET_VALUE_ERROR); } } diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/ExcelImportServer.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/ExcelImportServer.java index 7f99654..b98c9c2 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/ExcelImportServer.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/ExcelImportServer.java @@ -174,13 +174,15 @@ public class ExcelImportServer extends ImportBaseService { List collection = new ArrayList(); Map excelParams = new HashMap(); List excelCollection = new ArrayList(); - Field fileds[] = PoiPublicUtil.getClassFields(pojoClass); - ExcelTarget etarget = pojoClass.getAnnotation(ExcelTarget.class); String targetId = null; - if (etarget != null) { - targetId = etarget.value(); + if (!Map.class.equals(pojoClass)) { + Field fileds[] = PoiPublicUtil.getClassFields(pojoClass); + ExcelTarget etarget = pojoClass.getAnnotation(ExcelTarget.class); + if (etarget != null) { + targetId = etarget.value(); + } + getAllExcelField(targetId, fileds, excelParams, excelCollection, pojoClass, null); } - getAllExcelField(targetId, fileds, excelParams, excelCollection, pojoClass, null); Iterator rows = sheet.rowIterator(); for (int j = 0; j < params.getTitleRows(); j++) { rows.next(); @@ -217,8 +219,9 @@ public class ExcelImportServer extends ImportBaseService { for (int i = row.getFirstCellNum(), le = row.getLastCellNum(); i < le; i++) { Cell cell = row.getCell(i); String titleString = (String) titlemap.get(i); - if (excelParams.containsKey(titleString)) { - if (excelParams.get(titleString).getType() == 2) { + if (excelParams.containsKey(titleString) || Map.class.equals(pojoClass)) { + if (excelParams.get(titleString) != null + && excelParams.get(titleString).getType() == 2) { picId = row.getRowNum() + "_" + i; saveImage(object, picId, excelParams, titleString, pictures, params); } else { @@ -308,19 +311,22 @@ public class ExcelImportServer extends ImportBaseService { private void saveFieldValue(ImportParams params, Object object, Cell cell, Map excelParams, String titleString, Row row) throws Exception { - ExcelVerifyHanlderResult verifyResult; Object value = cellValueServer.getValue(params.getDataHanlder(), object, cell, excelParams, titleString); - verifyResult = verifyHandlerServer.verifyData(object, value, titleString, - excelParams.get(titleString).getVerify(), params.getVerifyHanlder()); - if (verifyResult.isSuccess()) { - setValues(excelParams.get(titleString), object, value); + if (object instanceof Map) { + ((Map) object).put(titleString, value); } else { - Cell errorCell = row.createCell(row.getLastCellNum()); - errorCell.setCellValue(verifyResult.getMsg()); - errorCell.setCellStyle(errorCellStyle); - verfiyFail = true; - throw new ExcelImportException(ExcelImportEnum.VERIFY_ERROR); + ExcelVerifyHanlderResult verifyResult = verifyHandlerServer.verifyData(object, value, + titleString, excelParams.get(titleString).getVerify(), params.getVerifyHanlder()); + if (verifyResult.isSuccess()) { + setValues(excelParams.get(titleString), object, value); + } else { + Cell errorCell = row.createCell(row.getLastCellNum()); + errorCell.setCellValue(verifyResult.getMsg()); + errorCell.setCellStyle(errorCellStyle); + verfiyFail = true; + throw new ExcelImportException(ExcelImportEnum.VERIFY_ERROR); + } } } diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/util/PoiPublicUtil.java b/easypoi-base/src/main/java/org/jeecgframework/poi/util/PoiPublicUtil.java index 5374d2b..d80acb5 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/util/PoiPublicUtil.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/util/PoiPublicUtil.java @@ -74,6 +74,9 @@ public final class PoiPublicUtil { Object obj = null; Method setMethod; try { + if(clazz.equals(Map.class)){ + return new HashMap(); + } obj = clazz.newInstance(); Field[] fields = getClassFields(clazz); for (Field field : fields) { diff --git a/easypoi-test/src/main/java/org/jeecgframework/poi/test/read/ExcelImportUtilTest.java b/easypoi-test/src/main/java/org/jeecgframework/poi/test/read/ExcelImportUtilTest.java index e08cc57..b5d67a1 100644 --- a/easypoi-test/src/main/java/org/jeecgframework/poi/test/read/ExcelImportUtilTest.java +++ b/easypoi-test/src/main/java/org/jeecgframework/poi/test/read/ExcelImportUtilTest.java @@ -5,18 +5,22 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.Date; import java.util.List; +import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.builder.ReflectionToStringBuilder; import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.entity.ImportParams; import org.jeecgframework.poi.test.entity.CourseEntity; +import org.jeecgframework.poi.test.entity.MsgClient; import org.jeecgframework.poi.test.entity.TestEntity; import org.jeecgframework.poi.test.entity.statistics.StatisticEntity; import org.junit.Test; public class ExcelImportUtilTest { + ///ExcelExportMsgClient 测试是这个到处的数据 + //@Test public void test() { try { @@ -24,7 +28,7 @@ public class ExcelImportUtilTest { params.setTitleRows(1); long start = new Date().getTime(); List list = ExcelImportUtil.importExcelBySax(new FileInputStream( - new File("d:/tt.xlsx")), StatisticEntity.class, params); + new File("d:/tt.xlsx")), StatisticEntity.class, params); // List list = ExcelImportUtil.importExcelBySax(new File("d:/tt.xlsx"), // StatisticEntity.class, params); /*for (int i = 0; i < list.size(); i++) { @@ -42,21 +46,24 @@ public class ExcelImportUtilTest { ImportParams params = new ImportParams(); params.setTitleRows(1); params.setHeadRows(1); - params.setSheetNum(8); - //params.setSheetNum(9); long start = new Date().getTime(); - List list = ExcelImportUtil.importExcel(new File("d:/tt.xlsx"), - TestEntity.class, params); - String str = ""; - for (int i = 0; i < list.size(); i++) { - if (StringUtils.isNotEmpty(list.get(i).getLanya())) { - str += "','" + Double.valueOf(list.get(i).getLanya()).intValue(); - } - if (StringUtils.isNotEmpty(list.get(i).getPos())) { - str += "','" + Double.valueOf(list.get(i).getPos()).intValue(); - } - } - System.out.println(str); - System.out.println(str.split(",").length); + List list = ExcelImportUtil.importExcel(new File("d:/tt.xlsx"), MsgClient.class, + params); + System.out.println(new Date().getTime() - start); + System.out.println(list.size()); + System.out.println(ReflectionToStringBuilder.toString(list.get(0))); + } + + @Test + public void testMapImport() { + ImportParams params = new ImportParams(); + params.setTitleRows(1); + params.setHeadRows(1); + long start = new Date().getTime(); + List> list = ExcelImportUtil.importExcel(new File("d:/tt.xlsx"), + Map.class, params); + System.out.println(new Date().getTime() - start); + System.out.println(list.size()); + System.out.println(list.get(0)); } }