@@ -366,7 +366,11 @@ public class ExcelImportServer extends ImportBaseService { | |||||
Object value = cellValueServer.getValue(params.getDataHanlder(), object, cell, excelParams, | Object value = cellValueServer.getValue(params.getDataHanlder(), object, cell, excelParams, | ||||
titleString); | titleString); | ||||
if (object instanceof Map) { | if (object instanceof Map) { | ||||
((Map) object).put(titleString, value); | |||||
if (params.getDataHanlder() != null) { | |||||
params.getDataHanlder().setMapValue((Map) object, titleString, value); | |||||
} else { | |||||
((Map) object).put(titleString, value); | |||||
} | |||||
} else { | } else { | ||||
ExcelVerifyHanlderResult verifyResult = verifyHandlerServer.verifyData(object, value, | ExcelVerifyHanlderResult verifyResult = verifyHandlerServer.verifyData(object, value, | ||||
titleString, excelParams.get(titleString).getVerify(), params.getVerifyHanlder()); | titleString, excelParams.get(titleString).getVerify(), params.getVerifyHanlder()); | ||||
@@ -15,6 +15,8 @@ | |||||
*/ | */ | ||||
package org.jeecgframework.poi.handler.impl; | package org.jeecgframework.poi.handler.impl; | ||||
import java.util.Map; | |||||
import org.jeecgframework.poi.handler.inter.IExcelDataHandler; | import org.jeecgframework.poi.handler.inter.IExcelDataHandler; | ||||
/** | /** | ||||
@@ -49,4 +51,9 @@ public abstract class ExcelDataHandlerDefaultImpl implements IExcelDataHandler { | |||||
this.needHandlerFields = needHandlerFields; | this.needHandlerFields = needHandlerFields; | ||||
} | } | ||||
@Override | |||||
public void setMapValue(Map<String, Object> map, String originKey, Object value) { | |||||
map.put(originKey, value); | |||||
} | |||||
} | } |
@@ -15,6 +15,8 @@ | |||||
*/ | */ | ||||
package org.jeecgframework.poi.handler.inter; | package org.jeecgframework.poi.handler.inter; | ||||
import java.util.Map; | |||||
/** | /** | ||||
* Excel 导入导出 数据处理接口 | * Excel 导入导出 数据处理接口 | ||||
* | * | ||||
@@ -62,4 +64,12 @@ public interface IExcelDataHandler { | |||||
*/ | */ | ||||
public void setNeedHandlerFields(String[] fields); | public void setNeedHandlerFields(String[] fields); | ||||
/** | |||||
* 设置Map导入,自定义 put | |||||
* @param map | |||||
* @param originKey | |||||
* @param value | |||||
*/ | |||||
public void setMapValue(Map<String, Object> map, String originKey, Object value); | |||||
} | } |
@@ -31,6 +31,19 @@ public final class PoiMergeCellUtil { | |||||
* @param startRow 开始行 | * @param startRow 开始行 | ||||
*/ | */ | ||||
public static void mergeCells(Sheet sheet, Map<Integer, int[]> mergeMap, int startRow) { | public static void mergeCells(Sheet sheet, Map<Integer, int[]> mergeMap, int startRow) { | ||||
mergeCells(sheet, mergeMap, startRow, sheet.getLastRowNum()); | |||||
} | |||||
/** | |||||
* 纵向合并相同内容的单元格 | |||||
* | |||||
* @param sheet | |||||
* @param mergeMap key--列,value--依赖的列,没有传空 | |||||
* @param startRow 开始行 | |||||
* @param endRow 结束行 | |||||
*/ | |||||
public static void mergeCells(Sheet sheet, Map<Integer, int[]> mergeMap, int startRow, | |||||
int endRow) { | |||||
Map<Integer, MergeEntity> mergeDataMap = new HashMap<Integer, MergeEntity>(); | Map<Integer, MergeEntity> mergeDataMap = new HashMap<Integer, MergeEntity>(); | ||||
if (mergeMap.size() == 0) { | if (mergeMap.size() == 0) { | ||||
return; | return; | ||||
@@ -38,11 +51,11 @@ public final class PoiMergeCellUtil { | |||||
Row row; | Row row; | ||||
Set<Integer> sets = mergeMap.keySet(); | Set<Integer> sets = mergeMap.keySet(); | ||||
String text; | String text; | ||||
for (int i = startRow; i <= sheet.getLastRowNum(); i++) { | |||||
for (int i = startRow; i <= endRow; i++) { | |||||
row = sheet.getRow(i); | row = sheet.getRow(i); | ||||
for (Integer index : sets) { | for (Integer index : sets) { | ||||
if (row.getCell(index) == null) { | |||||
mergeDataMap.get(index).setEndRow(i); | |||||
if (row == null || row.getCell(index) == null) { | |||||
mergeDataMap.get(index).setEndRow(i - 1); | |||||
} else { | } else { | ||||
text = row.getCell(index).getStringCellValue(); | text = row.getCell(index).getStringCellValue(); | ||||
if (StringUtils.isNotEmpty(text)) { | if (StringUtils.isNotEmpty(text)) { | ||||