| @@ -30,6 +30,10 @@ public class ExcelCollectionParams { | |||||
| * 集合对应的名称 | * 集合对应的名称 | ||||
| */ | */ | ||||
| private String name; | private String name; | ||||
| /** | |||||
| * Excel 列名称 | |||||
| */ | |||||
| private String excelName; | |||||
| /** | /** | ||||
| * 实体对象 | * 实体对象 | ||||
| */ | */ | ||||
| @@ -62,4 +66,12 @@ public class ExcelCollectionParams { | |||||
| public void setType(Class<?> type) { | public void setType(Class<?> type) { | ||||
| this.type = type; | this.type = type; | ||||
| } | } | ||||
| public String getExcelName() { | |||||
| return excelName; | |||||
| } | |||||
| public void setExcelName(String excelName) { | |||||
| this.excelName = excelName; | |||||
| } | |||||
| } | } | ||||
| @@ -43,6 +43,10 @@ public class ExcelImportEntity extends ExcelBaseEntity { | |||||
| * 校驗參數 | * 校驗參數 | ||||
| */ | */ | ||||
| private ExcelVerifyEntity verify; | private ExcelVerifyEntity verify; | ||||
| /** | |||||
| * 后缀 | |||||
| */ | |||||
| private String suffix; | |||||
| private List<ExcelImportEntity> list; | private List<ExcelImportEntity> list; | ||||
| @@ -94,4 +98,12 @@ public class ExcelImportEntity extends ExcelBaseEntity { | |||||
| this.verify = verify; | this.verify = verify; | ||||
| } | } | ||||
| public String getSuffix() { | |||||
| return suffix; | |||||
| } | |||||
| public void setSuffix(String suffix) { | |||||
| this.suffix = suffix; | |||||
| } | |||||
| } | } | ||||
| @@ -289,6 +289,7 @@ public class ExcelExportServer extends ExcelExportBase { | |||||
| titleStyle, entity); | titleStyle, entity); | ||||
| cellIndex++; | cellIndex++; | ||||
| } | } | ||||
| cellIndex--; | |||||
| } else if (rows == 2) { | } else if (rows == 2) { | ||||
| createStringCell(listRow, cellIndex, "", titleStyle, entity); | createStringCell(listRow, cellIndex, "", titleStyle, entity); | ||||
| sheet.addMergedRegion(new CellRangeAddress(index, index + 1, cellIndex, cellIndex)); | sheet.addMergedRegion(new CellRangeAddress(index, index + 1, cellIndex, cellIndex)); | ||||
| @@ -18,6 +18,7 @@ package org.jeecgframework.poi.excel.imports; | |||||
| import java.lang.reflect.Method; | import java.lang.reflect.Method; | ||||
| import java.lang.reflect.Type; | import java.lang.reflect.Type; | ||||
| import java.math.BigDecimal; | import java.math.BigDecimal; | ||||
| import java.sql.Time; | |||||
| import java.text.ParseException; | import java.text.ParseException; | ||||
| import java.text.SimpleDateFormat; | import java.text.SimpleDateFormat; | ||||
| import java.util.Arrays; | import java.util.Arrays; | ||||
| @@ -62,7 +63,7 @@ public class CellValueServer { | |||||
| } | } | ||||
| Object result = null; | Object result = null; | ||||
| // 日期格式比较特殊,和cell格式不一致 | // 日期格式比较特殊,和cell格式不一致 | ||||
| if ("class java.util.Date".equals(xclass)) { | |||||
| if ("class java.util.Date".equals(xclass) || ("class java.sql.Time").equals(xclass)) { | |||||
| if (Cell.CELL_TYPE_NUMERIC == cell.getCellType()) { | if (Cell.CELL_TYPE_NUMERIC == cell.getCellType()) { | ||||
| // 日期格式 | // 日期格式 | ||||
| result = cell.getDateCellValue(); | result = cell.getDateCellValue(); | ||||
| @@ -70,6 +71,9 @@ public class CellValueServer { | |||||
| cell.setCellType(Cell.CELL_TYPE_STRING); | cell.setCellType(Cell.CELL_TYPE_STRING); | ||||
| result = getDateData(entity, cell.getStringCellValue()); | result = getDateData(entity, cell.getStringCellValue()); | ||||
| } | } | ||||
| if (("class java.sql.Time").equals(xclass)) { | |||||
| result = new Time(((Date)result).getTime()); | |||||
| } | |||||
| } else if (Cell.CELL_TYPE_NUMERIC == cell.getCellType()) { | } else if (Cell.CELL_TYPE_NUMERIC == cell.getCellType()) { | ||||
| result = cell.getNumericCellValue(); | result = cell.getNumericCellValue(); | ||||
| } else if (Cell.CELL_TYPE_BOOLEAN == cell.getCellType()) { | } else if (Cell.CELL_TYPE_BOOLEAN == cell.getCellType()) { | ||||
| @@ -123,6 +127,7 @@ public class CellValueServer { | |||||
| } | } | ||||
| Object result = getCellValue(xclass, cell, entity); | Object result = getCellValue(xclass, cell, entity); | ||||
| if (entity != null) { | if (entity != null) { | ||||
| result = hanlderSuffix(entity.getSuffix(), result); | |||||
| result = replaceValue(entity.getReplace(), result); | result = replaceValue(entity.getReplace(), result); | ||||
| } | } | ||||
| result = hanlderValue(dataHanlder, object, result, titleString); | result = hanlderValue(dataHanlder, object, result, titleString); | ||||
| @@ -147,11 +152,26 @@ public class CellValueServer { | |||||
| Type[] ts = setMethod.getGenericParameterTypes(); | Type[] ts = setMethod.getGenericParameterTypes(); | ||||
| String xclass = ts[0].toString(); | String xclass = ts[0].toString(); | ||||
| Object result = cellEntity.getValue(); | Object result = cellEntity.getValue(); | ||||
| result = hanlderSuffix(entity.getSuffix(), result); | |||||
| result = replaceValue(entity.getReplace(), result); | result = replaceValue(entity.getReplace(), result); | ||||
| result = hanlderValue(dataHanlder, object, result, titleString); | result = hanlderValue(dataHanlder, object, result, titleString); | ||||
| return getValueByType(xclass, result); | return getValueByType(xclass, result); | ||||
| } | } | ||||
| /** | |||||
| * 把后缀删除掉 | |||||
| * @param result | |||||
| * @param suffix | |||||
| * @return | |||||
| */ | |||||
| private Object hanlderSuffix(String suffix, Object result) { | |||||
| if (StringUtils.isNotEmpty(suffix) && result != null && result.toString().endsWith(suffix)) { | |||||
| String temp = result.toString(); | |||||
| return temp.substring(0, temp.length() - suffix.length()); | |||||
| } | |||||
| return result; | |||||
| } | |||||
| /** | /** | ||||
| * 根据返回类型获取返回值 | * 根据返回类型获取返回值 | ||||
| * | * | ||||
| @@ -144,7 +144,7 @@ public class ExcelImportServer extends ImportBaseService { | |||||
| obj = cell.getNumericCellValue(); | obj = cell.getNumericCellValue(); | ||||
| break; | break; | ||||
| } | } | ||||
| return obj == null ? null : obj.toString(); | |||||
| return obj == null ? null : obj.toString().trim(); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -187,22 +187,8 @@ public class ExcelImportServer extends ImportBaseService { | |||||
| for (int j = 0; j < params.getTitleRows(); j++) { | for (int j = 0; j < params.getTitleRows(); j++) { | ||||
| rows.next(); | rows.next(); | ||||
| } | } | ||||
| Map<Integer, String> titlemap = getTitleMap(rows, params, excelCollection); | |||||
| Row row = null; | Row row = null; | ||||
| Iterator<Cell> cellTitle; | |||||
| Map<Integer, String> titlemap = new HashMap<Integer, String>(); | |||||
| for (int j = 0; j < params.getHeadRows(); j++) { | |||||
| row = rows.next(); | |||||
| cellTitle = row.cellIterator(); | |||||
| int i = row.getFirstCellNum(); | |||||
| while (cellTitle.hasNext()) { | |||||
| Cell cell = cellTitle.next(); | |||||
| String value = getKeyValue(cell); | |||||
| if (!StringUtils.isEmpty(value)) { | |||||
| titlemap.put(i, value); | |||||
| } | |||||
| i = i + 1; | |||||
| } | |||||
| } | |||||
| Object object = null; | Object object = null; | ||||
| String picId; | String picId; | ||||
| while (rows.hasNext()) { | while (rows.hasNext()) { | ||||
| @@ -244,6 +230,67 @@ public class ExcelImportServer extends ImportBaseService { | |||||
| return collection; | return collection; | ||||
| } | } | ||||
| /** | |||||
| * 获取表格字段列名对应信息 | |||||
| * @param rows | |||||
| * @param params | |||||
| * @param excelCollection | |||||
| * @return | |||||
| */ | |||||
| private Map<Integer, String> getTitleMap(Iterator<Row> rows, ImportParams params, | |||||
| List<ExcelCollectionParams> excelCollection) { | |||||
| Map<Integer, String> titlemap = new HashMap<Integer, String>(); | |||||
| Iterator<Cell> cellTitle; | |||||
| String collectionName = null; | |||||
| ExcelCollectionParams collectionParams = null; | |||||
| Row row = null; | |||||
| //还没想到好办法判断 | |||||
| for (int j = 0; j < params.getHeadRows(); j++) { | |||||
| row = rows.next(); | |||||
| cellTitle = row.cellIterator(); | |||||
| while (cellTitle.hasNext()) { | |||||
| Cell cell = cellTitle.next(); | |||||
| String value = getKeyValue(cell); | |||||
| int i = cell.getColumnIndex(); | |||||
| //用以支持重名导入 | |||||
| if (StringUtils.isNotEmpty(value)) { | |||||
| if (titlemap.containsKey(i)) { | |||||
| collectionName = titlemap.get(i); | |||||
| collectionParams = getCollectionParams(excelCollection, collectionName); | |||||
| titlemap.put(i, collectionName + "_" + value); | |||||
| } else if (StringUtils.isNotEmpty(collectionName) | |||||
| && collectionParams.getExcelParams().containsKey( | |||||
| collectionName + "_" + value)) { | |||||
| titlemap.put(i, collectionName + "_" + value); | |||||
| } else { | |||||
| collectionName = null; | |||||
| collectionParams = null; | |||||
| } | |||||
| if (StringUtils.isEmpty(collectionName)) { | |||||
| titlemap.put(i, value); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| return titlemap; | |||||
| } | |||||
| /** | |||||
| * 获取这个名称对应的集合信息 | |||||
| * @param excelCollection | |||||
| * @param collectionName | |||||
| * @return | |||||
| */ | |||||
| private ExcelCollectionParams getCollectionParams(List<ExcelCollectionParams> excelCollection, | |||||
| String collectionName) { | |||||
| for (ExcelCollectionParams excelCollectionParams : excelCollection) { | |||||
| if (collectionName.equals(excelCollectionParams.getExcelName())) { | |||||
| return excelCollectionParams; | |||||
| } | |||||
| } | |||||
| return null; | |||||
| } | |||||
| /** | /** | ||||
| * Excel 导入 field 字段类型 Integer,Long,Double,Date,String,Boolean | * Excel 导入 field 字段类型 Integer,Long,Double,Date,String,Boolean | ||||
| * | * | ||||
| @@ -24,12 +24,15 @@ import java.text.SimpleDateFormat; | |||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||
| import java.util.Date; | import java.util.Date; | ||||
| import java.util.HashMap; | import java.util.HashMap; | ||||
| import java.util.HashSet; | |||||
| import java.util.List; | import java.util.List; | ||||
| import java.util.Map; | import java.util.Map; | ||||
| import java.util.Set; | |||||
| import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
| import org.apache.poi.ss.usermodel.Workbook; | import org.apache.poi.ss.usermodel.Workbook; | ||||
| import org.jeecgframework.poi.excel.annotation.Excel; | import org.jeecgframework.poi.excel.annotation.Excel; | ||||
| import org.jeecgframework.poi.excel.annotation.ExcelCollection; | |||||
| import org.jeecgframework.poi.excel.annotation.ExcelVerify; | import org.jeecgframework.poi.excel.annotation.ExcelVerify; | ||||
| import org.jeecgframework.poi.excel.entity.ImportParams; | import org.jeecgframework.poi.excel.entity.ImportParams; | ||||
| import org.jeecgframework.poi.excel.entity.params.ExcelCollectionParams; | import org.jeecgframework.poi.excel.entity.params.ExcelCollectionParams; | ||||
| @@ -56,8 +59,8 @@ public class ImportBaseService { | |||||
| * @throws Exception | * @throws Exception | ||||
| */ | */ | ||||
| public void addEntityToMap(String targetId, Field field, ExcelImportEntity excelEntity, | public void addEntityToMap(String targetId, Field field, ExcelImportEntity excelEntity, | ||||
| Class<?> pojoClass, List<Method> getMethods, | |||||
| Map<String, ExcelImportEntity> temp) throws Exception { | |||||
| Class<?> pojoClass, List<Method> getMethods, | |||||
| Map<String, ExcelImportEntity> temp) throws Exception { | |||||
| Excel excel = field.getAnnotation(Excel.class); | Excel excel = field.getAnnotation(Excel.class); | ||||
| excelEntity = new ExcelImportEntity(); | excelEntity = new ExcelImportEntity(); | ||||
| excelEntity.setType(excel.type()); | excelEntity.setType(excel.type()); | ||||
| @@ -66,6 +69,7 @@ public class ImportBaseService { | |||||
| excelEntity.setReplace(excel.replace()); | excelEntity.setReplace(excel.replace()); | ||||
| excelEntity.setDatabaseFormat(excel.databaseFormat()); | excelEntity.setDatabaseFormat(excel.databaseFormat()); | ||||
| excelEntity.setVerify(getImportVerify(field)); | excelEntity.setVerify(getImportVerify(field)); | ||||
| excelEntity.setSuffix(excel.suffix()); | |||||
| getExcelField(targetId, field, excelEntity, excel, pojoClass); | getExcelField(targetId, field, excelEntity, excel, pojoClass); | ||||
| if (getMethods != null) { | if (getMethods != null) { | ||||
| List<Method> newMethods = new ArrayList<Method>(); | List<Method> newMethods = new ArrayList<Method>(); | ||||
| @@ -113,9 +117,9 @@ public class ImportBaseService { | |||||
| * @throws Exception | * @throws Exception | ||||
| */ | */ | ||||
| public void getAllExcelField(String targetId, Field[] fields, | public void getAllExcelField(String targetId, Field[] fields, | ||||
| Map<String, ExcelImportEntity> excelParams, | |||||
| List<ExcelCollectionParams> excelCollection, Class<?> pojoClass, | |||||
| List<Method> getMethods) throws Exception { | |||||
| Map<String, ExcelImportEntity> excelParams, | |||||
| List<ExcelCollectionParams> excelCollection, Class<?> pojoClass, | |||||
| List<Method> getMethods) throws Exception { | |||||
| ExcelImportEntity excelEntity = null; | ExcelImportEntity excelEntity = null; | ||||
| for (int i = 0; i < fields.length; i++) { | for (int i = 0; i < fields.length; i++) { | ||||
| Field field = fields[i]; | Field field = fields[i]; | ||||
| @@ -132,6 +136,8 @@ public class ImportBaseService { | |||||
| collection.setType(clz); | collection.setType(clz); | ||||
| getExcelFieldList(targetId, PoiPublicUtil.getClassFields(clz), clz, temp, null); | getExcelFieldList(targetId, PoiPublicUtil.getClassFields(clz), clz, temp, null); | ||||
| collection.setExcelParams(temp); | collection.setExcelParams(temp); | ||||
| collection.setExcelName(field.getAnnotation(ExcelCollection.class).name()); | |||||
| additionalCollectionName(collection); | |||||
| excelCollection.add(collection); | excelCollection.add(collection); | ||||
| } else if (PoiPublicUtil.isJavaClass(field)) { | } else if (PoiPublicUtil.isJavaClass(field)) { | ||||
| addEntityToMap(targetId, field, excelEntity, pojoClass, getMethods, excelParams); | addEntityToMap(targetId, field, excelEntity, pojoClass, getMethods, excelParams); | ||||
| @@ -147,21 +153,35 @@ public class ImportBaseService { | |||||
| } | } | ||||
| } | } | ||||
| /** | |||||
| * 追加集合名称到前面 | |||||
| * @param collection | |||||
| */ | |||||
| private void additionalCollectionName(ExcelCollectionParams collection) { | |||||
| Set<String> keys = new HashSet<String>(); | |||||
| keys.addAll(collection.getExcelParams().keySet()); | |||||
| for (String key : keys) { | |||||
| collection.getExcelParams().put(collection.getExcelName() + "_" + key, | |||||
| collection.getExcelParams().get(key)); | |||||
| collection.getExcelParams().remove(key); | |||||
| } | |||||
| } | |||||
| public void getExcelField(String targetId, Field field, ExcelImportEntity excelEntity, | public void getExcelField(String targetId, Field field, ExcelImportEntity excelEntity, | ||||
| Excel excel, Class<?> pojoClass) throws Exception { | |||||
| Excel excel, Class<?> pojoClass) throws Exception { | |||||
| excelEntity.setName(getExcelName(excel.name(), targetId)); | excelEntity.setName(getExcelName(excel.name(), targetId)); | ||||
| String fieldname = field.getName(); | String fieldname = field.getName(); | ||||
| excelEntity.setMethod(PoiPublicUtil.getMethod(fieldname, pojoClass, field.getType())); | excelEntity.setMethod(PoiPublicUtil.getMethod(fieldname, pojoClass, field.getType())); | ||||
| if (StringUtils.isEmpty(excel.importFormat())) { | |||||
| excelEntity.setFormat(excel.format()); | |||||
| } else { | |||||
| if (StringUtils.isNotEmpty(excel.importFormat())) { | |||||
| excelEntity.setFormat(excel.importFormat()); | excelEntity.setFormat(excel.importFormat()); | ||||
| } else { | |||||
| excelEntity.setFormat(excel.format()); | |||||
| } | } | ||||
| } | } | ||||
| public void getExcelFieldList(String targetId, Field[] fields, Class<?> pojoClass, | public void getExcelFieldList(String targetId, Field[] fields, Class<?> pojoClass, | ||||
| Map<String, ExcelImportEntity> temp, List<Method> getMethods) | |||||
| throws Exception { | |||||
| Map<String, ExcelImportEntity> temp, List<Method> getMethods) | |||||
| throws Exception { | |||||
| ExcelImportEntity excelEntity = null; | ExcelImportEntity excelEntity = null; | ||||
| for (int i = 0; i < fields.length; i++) { | for (int i = 0; i < fields.length; i++) { | ||||
| Field field = fields[i]; | Field field = fields[i]; | ||||
| @@ -213,7 +233,7 @@ public class ImportBaseService { | |||||
| } | } | ||||
| public void saveThisExcel(ImportParams params, Class<?> pojoClass, boolean isXSSFWorkbook, | public void saveThisExcel(ImportParams params, Class<?> pojoClass, boolean isXSSFWorkbook, | ||||
| Workbook book) throws Exception { | |||||
| Workbook book) throws Exception { | |||||
| String path = PoiPublicUtil.getWebRootPath(getSaveExcelUrl(params, pojoClass)); | String path = PoiPublicUtil.getWebRootPath(getSaveExcelUrl(params, pojoClass)); | ||||
| File savefile = new File(path); | File savefile = new File(path); | ||||
| if (!savefile.exists()) { | if (!savefile.exists()) { | ||||
| @@ -251,7 +271,7 @@ public class ImportBaseService { | |||||
| * @param object | * @param object | ||||
| */ | */ | ||||
| public void setFieldBySomeMethod(List<Method> setMethods, Object object, Object value) | public void setFieldBySomeMethod(List<Method> setMethods, Object object, Object value) | ||||
| throws Exception { | |||||
| throws Exception { | |||||
| Object t = getFieldBySomeMethod(setMethods, object); | Object t = getFieldBySomeMethod(setMethods, object); | ||||
| setMethods.get(setMethods.size() - 1).invoke(t, value); | setMethods.get(setMethods.size() - 1).invoke(t, value); | ||||
| } | } | ||||
| @@ -52,6 +52,8 @@ import org.jeecgframework.poi.excel.entity.vo.PoiBaseConstants; | |||||
| import org.jeecgframework.poi.word.entity.WordImageEntity; | import org.jeecgframework.poi.word.entity.WordImageEntity; | ||||
| import org.jeecgframework.poi.word.entity.params.ExcelListEntity; | import org.jeecgframework.poi.word.entity.params.ExcelListEntity; | ||||
| import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTMarker; | import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTMarker; | ||||
| import org.slf4j.Logger; | |||||
| import org.slf4j.LoggerFactory; | |||||
| /** | /** | ||||
| * EASYPOI 的公共基础类 | * EASYPOI 的公共基础类 | ||||
| @@ -60,6 +62,8 @@ import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTMarker; | |||||
| */ | */ | ||||
| public final class PoiPublicUtil { | public final class PoiPublicUtil { | ||||
| private static final Logger LOGGER = LoggerFactory.getLogger(PoiPublicUtil.class); | |||||
| private PoiPublicUtil() { | private PoiPublicUtil() { | ||||
| } | } | ||||
| @@ -74,7 +78,7 @@ public final class PoiPublicUtil { | |||||
| Object obj = null; | Object obj = null; | ||||
| Method setMethod; | Method setMethod; | ||||
| try { | try { | ||||
| if(clazz.equals(Map.class)){ | |||||
| if (clazz.equals(Map.class)) { | |||||
| return new HashMap<String, Object>(); | return new HashMap<String, Object>(); | ||||
| } | } | ||||
| obj = clazz.newInstance(); | obj = clazz.newInstance(); | ||||
| @@ -94,6 +98,7 @@ public final class PoiPublicUtil { | |||||
| } | } | ||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| LOGGER.error(e.getMessage(), e); | |||||
| throw new RuntimeException("创建对象异常"); | throw new RuntimeException("创建对象异常"); | ||||
| } | } | ||||
| return obj; | return obj; | ||||
| @@ -271,6 +276,7 @@ public final class PoiPublicUtil { | |||||
| } else if (fieldType.isPrimitive() || fieldType.getPackage() == null | } else if (fieldType.isPrimitive() || fieldType.getPackage() == null | ||||
| || fieldType.getPackage().getName().equals("java.lang") | || fieldType.getPackage().getName().equals("java.lang") | ||||
| || fieldType.getPackage().getName().equals("java.math") | || fieldType.getPackage().getName().equals("java.math") | ||||
| || fieldType.getPackage().getName().equals("java.sql") | |||||
| || fieldType.getPackage().getName().equals("java.util")) { | || fieldType.getPackage().getName().equals("java.util")) { | ||||
| isBaseClass = true; | isBaseClass = true; | ||||
| } | } | ||||
| @@ -28,10 +28,10 @@ public class StudentEntity implements java.io.Serializable { | |||||
| @Excel(name = "学生性别", replace = { "男_1", "女_2" }, suffix = "生") | @Excel(name = "学生性别", replace = { "男_1", "女_2" }, suffix = "生") | ||||
| private int sex; | private int sex; | ||||
| @Excel(name = "出生日期", databaseFormat = "yyyyMMddHHmmss", exportFormat = "yyyy-MM-dd") | |||||
| @Excel(name = "出生日期", databaseFormat = "yyyyMMddHHmmss", format = "yyyy-MM-dd") | |||||
| private Date birthday; | private Date birthday; | ||||
| @Excel(name = "进校日期", databaseFormat = "yyyyMMddHHmmss", exportFormat = "yyyy-MM-dd") | |||||
| @Excel(name = "进校日期", databaseFormat = "yyyyMMddHHmmss", format = "yyyy-MM-dd") | |||||
| private java.sql.Time registrationDate; | private java.sql.Time registrationDate; | ||||
| /** | /** | ||||
| * 课程主键 | * 课程主键 | ||||
| @@ -0,0 +1,46 @@ | |||||
| package org.jeecgframework.poi.test.entity.samename; | |||||
| import java.util.List; | |||||
| import org.jeecgframework.poi.excel.annotation.Excel; | |||||
| import org.jeecgframework.poi.excel.annotation.ExcelCollection; | |||||
| import org.jeecgframework.poi.test.entity.StudentEntity; | |||||
| public class ClassName { | |||||
| @Excel(name="班级") | |||||
| private String name; | |||||
| @ExcelCollection(name="小组A") | |||||
| private List<StudentEntity> arrA; | |||||
| @ExcelCollection(name="小组B") | |||||
| private List<StudentEntity> arrB; | |||||
| public String getName() { | |||||
| return name; | |||||
| } | |||||
| public void setName(String name) { | |||||
| this.name = name; | |||||
| } | |||||
| public List<StudentEntity> getArrA() { | |||||
| return arrA; | |||||
| } | |||||
| public void setArrA(List<StudentEntity> arrA) { | |||||
| this.arrA = arrA; | |||||
| } | |||||
| public List<StudentEntity> getArrB() { | |||||
| return arrB; | |||||
| } | |||||
| public void setArrB(List<StudentEntity> arrB) { | |||||
| this.arrB = arrB; | |||||
| } | |||||
| } | |||||