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