Explorar el Código

导入输出Map类型,测试版本

4.1.3.A
jueyue hace 9 años
padre
commit
b93e04588f
Se han modificado 4 ficheros con 60 adiciones y 39 borrados
  1. +11
    -6
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/CellValueServer.java
  2. +23
    -17
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/ExcelImportServer.java
  3. +3
    -0
      easypoi-base/src/main/java/org/jeecgframework/poi/util/PoiPublicUtil.java
  4. +23
    -16
      easypoi-test/src/main/java/org/jeecgframework/poi/test/read/ExcelImportUtilTest.java

+ 11
- 6
easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/CellValueServer.java Ver fichero

@@ -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);
}
}


+ 23
- 17
easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/ExcelImportServer.java Ver fichero

@@ -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);
}
}
}


+ 3
- 0
easypoi-base/src/main/java/org/jeecgframework/poi/util/PoiPublicUtil.java Ver fichero

@@ -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) {


+ 23
- 16
easypoi-test/src/main/java/org/jeecgframework/poi/test/read/ExcelImportUtilTest.java Ver fichero

@@ -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));
}
}

Cargando…
Cancelar
Guardar