From cf6394d8c704544a8a11a3820bb3251b7d183171 Mon Sep 17 00:00:00 2001 From: jueyue Date: Mon, 20 Apr 2020 17:03:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A8=AA=E5=90=91=E8=BF=AD=E4=BB=A3=E7=9A=84?= =?UTF-8?q?=E6=97=B6=E5=80=99,=E5=90=88=E5=B9=B6=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../export/template/ExcelExportOfTemplateUtil.java | 12 ++++++++++++ .../java/cn/afterturn/easypoi/util/PoiElUtil.java | 3 ++- .../cn/afterturn/easypoi/util/PoiPublicUtil.java | 14 ++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/easypoi-base/src/main/java/cn/afterturn/easypoi/excel/export/template/ExcelExportOfTemplateUtil.java b/easypoi-base/src/main/java/cn/afterturn/easypoi/excel/export/template/ExcelExportOfTemplateUtil.java index bacc17b..5acf4ad 100644 --- a/easypoi-base/src/main/java/cn/afterturn/easypoi/excel/export/template/ExcelExportOfTemplateUtil.java +++ b/easypoi-base/src/main/java/cn/afterturn/easypoi/excel/export/template/ExcelExportOfTemplateUtil.java @@ -589,6 +589,18 @@ public final class ExcelExportOfTemplateUtil extends BaseExportService { isI18n = true; oldString = oldString.replaceFirst(I18N_HANDLER, ""); } + if (isHasSymbol(oldString, MERGE)) { + String mergeStr = PoiPublicUtil.getElStr(oldString,MERGE); + oldString = oldString.replace(mergeStr, ""); + mergeStr = mergeStr.replaceFirst(MERGE, ""); + try { + int colSpan = (int)Double.parseDouble(PoiPublicUtil.getRealValue(mergeStr, map).toString()); + PoiMergeCellUtil.addMergedRegion(cell.getSheet(), cell.getRowIndex(), + cell.getRowIndex() , cell.getColumnIndex(), cell.getColumnIndex() + colSpan - 1); + } catch (Exception e) { + LOGGER.error(e.getMessage(),e); + } + } Object obj = PoiPublicUtil.getRealValue(oldString, map); if (isDict) { obj = dictHandler.toName(dict, null, oldString, obj); diff --git a/easypoi-base/src/main/java/cn/afterturn/easypoi/util/PoiElUtil.java b/easypoi-base/src/main/java/cn/afterturn/easypoi/util/PoiElUtil.java index fb50ce1..53c8166 100644 --- a/easypoi-base/src/main/java/cn/afterturn/easypoi/util/PoiElUtil.java +++ b/easypoi-base/src/main/java/cn/afterturn/easypoi/util/PoiElUtil.java @@ -40,6 +40,7 @@ public final class PoiElUtil { public static final String END_STR = "}}"; public static final String WRAP = "]]"; public static final String NUMBER_SYMBOL = "n:"; + public static final String MERGE = "merge:"; public static final String STYLE_SELF = "sy:"; public static final String FORMAT_DATE = "fd:"; public static final String FORMAT_NUMBER = "fn:"; @@ -48,7 +49,7 @@ public final class PoiElUtil { public static final String EMPTY = ""; public static final String CONST = "'"; public static final String NULL = "&NULL&"; - public static final String INDEX = "&INDEX&"; + public static final String INDEX = "&INDEX&"; public static final String LEFT_BRACKET = "("; public static final String RIGHT_BRACKET = ")"; public static final String CAL = "cal:"; diff --git a/easypoi-base/src/main/java/cn/afterturn/easypoi/util/PoiPublicUtil.java b/easypoi-base/src/main/java/cn/afterturn/easypoi/util/PoiPublicUtil.java index 23fa896..4313b41 100644 --- a/easypoi-base/src/main/java/cn/afterturn/easypoi/util/PoiPublicUtil.java +++ b/easypoi-base/src/main/java/cn/afterturn/easypoi/util/PoiPublicUtil.java @@ -485,4 +485,18 @@ public final class PoiPublicUtil { String[] paramsArr = name.split("\\."); return paramsArr[paramsArr.length - 1]; } + + /** + * 找到字符串中包含key的{{字符串返回}} + * + * @param str + * @param key + * @return + */ + public static String getElStr(String str, String key) { + int keyIndex = str.indexOf(key); + int startIndex = (str.substring(0, keyIndex)).lastIndexOf(START_STR); + int endIndex = str.indexOf(END_STR, keyIndex) + 2; + return str.substring(startIndex, endIndex); + } }