From 3a823e2744b276813ba501ead376ed0d0032ed7f Mon Sep 17 00:00:00 2001 From: jueyue Date: Sun, 21 Jun 2015 22:31:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E4=BA=86map=20setValue?= =?UTF-8?q?=E7=9A=84=E6=8E=A5=E5=8F=A3,=E7=94=A8=E4=BB=A5=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89setValue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poi/excel/imports/ExcelImportServer.java | 6 +++++- .../impl/ExcelDataHandlerDefaultImpl.java | 7 +++++++ .../poi/handler/inter/IExcelDataHandler.java | 10 ++++++++++ .../poi/util/PoiMergeCellUtil.java | 19 ++++++++++++++++--- 4 files changed, 38 insertions(+), 4 deletions(-) diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/ExcelImportServer.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/ExcelImportServer.java index 3180fcc..e115750 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/ExcelImportServer.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/ExcelImportServer.java @@ -366,7 +366,11 @@ public class ExcelImportServer extends ImportBaseService { Object value = cellValueServer.getValue(params.getDataHanlder(), object, cell, excelParams, titleString); 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 { ExcelVerifyHanlderResult verifyResult = verifyHandlerServer.verifyData(object, value, titleString, excelParams.get(titleString).getVerify(), params.getVerifyHanlder()); diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/handler/impl/ExcelDataHandlerDefaultImpl.java b/easypoi-base/src/main/java/org/jeecgframework/poi/handler/impl/ExcelDataHandlerDefaultImpl.java index da46859..46a96af 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/handler/impl/ExcelDataHandlerDefaultImpl.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/handler/impl/ExcelDataHandlerDefaultImpl.java @@ -15,6 +15,8 @@ */ package org.jeecgframework.poi.handler.impl; +import java.util.Map; + import org.jeecgframework.poi.handler.inter.IExcelDataHandler; /** @@ -49,4 +51,9 @@ public abstract class ExcelDataHandlerDefaultImpl implements IExcelDataHandler { this.needHandlerFields = needHandlerFields; } + @Override + public void setMapValue(Map map, String originKey, Object value) { + map.put(originKey, value); + } + } diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/handler/inter/IExcelDataHandler.java b/easypoi-base/src/main/java/org/jeecgframework/poi/handler/inter/IExcelDataHandler.java index 329f005..184f969 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/handler/inter/IExcelDataHandler.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/handler/inter/IExcelDataHandler.java @@ -15,6 +15,8 @@ */ package org.jeecgframework.poi.handler.inter; +import java.util.Map; + /** * Excel 导入导出 数据处理接口 * @@ -62,4 +64,12 @@ public interface IExcelDataHandler { */ public void setNeedHandlerFields(String[] fields); + /** + * 设置Map导入,自定义 put + * @param map + * @param originKey + * @param value + */ + public void setMapValue(Map map, String originKey, Object value); + } diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/util/PoiMergeCellUtil.java b/easypoi-base/src/main/java/org/jeecgframework/poi/util/PoiMergeCellUtil.java index 5720dff..fcaa152 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/util/PoiMergeCellUtil.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/util/PoiMergeCellUtil.java @@ -31,6 +31,19 @@ public final class PoiMergeCellUtil { * @param startRow 开始行 */ public static void mergeCells(Sheet sheet, Map 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 mergeMap, int startRow, + int endRow) { Map mergeDataMap = new HashMap(); if (mergeMap.size() == 0) { return; @@ -38,11 +51,11 @@ public final class PoiMergeCellUtil { Row row; Set sets = mergeMap.keySet(); String text; - for (int i = startRow; i <= sheet.getLastRowNum(); i++) { + for (int i = startRow; i <= endRow; i++) { row = sheet.getRow(i); 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 { text = row.getCell(index).getStringCellValue(); if (StringUtils.isNotEmpty(text)) {