From 663762ea0e2c0d4a8df1e24bdea5f43f8cac2bd4 Mon Sep 17 00:00:00 2001 From: jueyue Date: Sun, 21 Jun 2015 23:20:22 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E5=90=88=E5=B9=B6=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=A0=BC,=E5=B7=B2=E7=BB=8Fhanlder=E7=9A=84=20null=E5=BC=82?= =?UTF-8?q?=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../poi/excel/imports/CellValueServer.java | 3 +- .../poi/util/PoiMergeCellUtil.java | 37 ++++++++++++++++--- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/CellValueServer.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/CellValueServer.java index 9c85a69..c50eb9f 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/CellValueServer.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/CellValueServer.java @@ -233,7 +233,8 @@ public class CellValueServer { */ private Object hanlderValue(IExcelDataHandler dataHanlder, Object object, Object result, String titleString) { - if (dataHanlder == null) { + if (dataHanlder == null || dataHanlder.getNeedHandlerFields() == null + || dataHanlder.getNeedHandlerFields().length == 0) { return result; } if (hanlderList == null) { 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 fcaa152..a46f053 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 @@ -12,6 +12,7 @@ import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.util.CellRangeAddress; import org.jeecgframework.poi.excel.entity.params.MergeEntity; +import org.jeecgframework.poi.exception.excel.ExcelExportException; /** * 纵向合并单元格工具类 @@ -23,6 +24,24 @@ public final class PoiMergeCellUtil { private PoiMergeCellUtil() { } + /** + * 纵向合并相同内容的单元格 + * + * @param sheet + * @param startRow 开始行 + * @param columns 需要处理的列 + */ + public static void mergeCells(Sheet sheet, int startRow, Integer... columns) { + if (columns == null) { + throw new ExcelExportException("至少需要处理1列"); + } + Map mergeMap = new HashMap(); + for (int i = 0; i < columns.length; i++) { + mergeMap.put(columns[i], null); + } + mergeCells(sheet, mergeMap, startRow, sheet.getLastRowNum()); + } + /** * 纵向合并相同内容的单元格 * @@ -55,7 +74,12 @@ public final class PoiMergeCellUtil { row = sheet.getRow(i); for (Integer index : sets) { if (row == null || row.getCell(index) == null) { - mergeDataMap.get(index).setEndRow(i - 1); + if (mergeDataMap.get(index) == null) { + continue; + } + if (mergeDataMap.get(index).getEndRow() == 0) { + mergeDataMap.get(index).setEndRow(i - 1); + } } else { text = row.getCell(index).getStringCellValue(); if (StringUtils.isNotEmpty(text)) { @@ -122,10 +146,13 @@ public final class PoiMergeCellUtil { private static MergeEntity createMergeEntity(String text, int rowNum, Cell cell, int[] delys) { MergeEntity mergeEntity = new MergeEntity(text, rowNum, rowNum); - List list = new ArrayList(delys.length); - mergeEntity.setRelyList(list); - for (int i = 0; i < delys.length; i++) { - list.add(getCellNotNullText(cell, delys[i], rowNum)); + // 存在依赖关系 + if (delys != null && delys.length != 0) { + List list = new ArrayList(delys.length); + mergeEntity.setRelyList(list); + for (int i = 0; i < delys.length; i++) { + list.add(getCellNotNullText(cell, delys[i], rowNum)); + } } return mergeEntity; }