| @@ -114,12 +114,17 @@ public class CellValueServer { | |||
| Map<String, ExcelImportEntity> 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); | |||
| } | |||
| } | |||
| @@ -174,13 +174,15 @@ public class ExcelImportServer extends ImportBaseService { | |||
| List collection = new ArrayList(); | |||
| Map<String, ExcelImportEntity> excelParams = new HashMap<String, ExcelImportEntity>(); | |||
| List<ExcelCollectionParams> excelCollection = new ArrayList<ExcelCollectionParams>(); | |||
| 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<Row> 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<String, ExcelImportEntity> 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); | |||
| } | |||
| } | |||
| } | |||
| @@ -74,6 +74,9 @@ public final class PoiPublicUtil { | |||
| Object obj = null; | |||
| Method setMethod; | |||
| try { | |||
| if(clazz.equals(Map.class)){ | |||
| return new HashMap<String, Object>(); | |||
| } | |||
| obj = clazz.newInstance(); | |||
| Field[] fields = getClassFields(clazz); | |||
| for (Field field : fields) { | |||
| @@ -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<StatisticEntity> list = ExcelImportUtil.importExcelBySax(new FileInputStream( | |||
| new File("d:/tt.xlsx")), StatisticEntity.class, params); | |||
| new File("d:/tt.xlsx")), StatisticEntity.class, params); | |||
| // List<StatisticEntity> 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<TestEntity> 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<MsgClient> 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<Map<String, Object>> 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)); | |||
| } | |||
| } | |||