From 49eb2f86915b1109b820320c502f793150de105c Mon Sep 17 00:00:00 2001 From: jueyue Date: Fri, 20 Oct 2017 10:54:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E5=85=A5=E4=BA=86=E5=88=97=E5=90=8D?= =?UTF-8?q?=E9=A1=BA=E5=BA=8F=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../easypoi/excel/entity/ImportParams.java | 15 +++++++++++-- .../excel/imports/ExcelImportServer.java | 22 ++++++++++++++++--- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/easypoi-base/src/main/java/cn/afterturn/easypoi/excel/entity/ImportParams.java b/easypoi-base/src/main/java/cn/afterturn/easypoi/excel/entity/ImportParams.java index 4924471..ca50632 100644 --- a/easypoi-base/src/main/java/cn/afterturn/easypoi/excel/entity/ImportParams.java +++ b/easypoi-base/src/main/java/cn/afterturn/easypoi/excel/entity/ImportParams.java @@ -1,6 +1,6 @@ /** * Copyright 2013-2015 JueYue (qrb.jueyue@gmail.com) - * + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -19,7 +19,7 @@ import cn.afterturn.easypoi.handler.inter.IExcelVerifyHandler; /** * 导入参数设置 - * + * * @author JueYue * 2013-9-24 * @version 1.0 @@ -86,6 +86,10 @@ public class ImportParams extends ExcelBaseParams { * 导入时校验数据模板,是不是正确的Excel */ private String[] importFields; + /** + * 导入时校验excel的标题列顺序。依赖于importFields的配置顺序 + */ + private boolean needCheckOrder = false; /** * Key-Value 读取标记,以这个为Key,后面一个Cell 为Value,多个改为ArrayList */ @@ -225,4 +229,11 @@ public class ImportParams extends ExcelBaseParams { this.verfiyGroup = verfiyGroup; } + public boolean isNeedCheckOrder() { + return needCheckOrder; + } + + public void setNeedCheckOrder(boolean needCheckOrder) { + this.needCheckOrder = needCheckOrder; + } } diff --git a/easypoi-base/src/main/java/cn/afterturn/easypoi/excel/imports/ExcelImportServer.java b/easypoi-base/src/main/java/cn/afterturn/easypoi/excel/imports/ExcelImportServer.java index 283b125..db0eef4 100644 --- a/easypoi-base/src/main/java/cn/afterturn/easypoi/excel/imports/ExcelImportServer.java +++ b/easypoi-base/src/main/java/cn/afterturn/easypoi/excel/imports/ExcelImportServer.java @@ -43,6 +43,7 @@ import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.Iterator; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -295,7 +296,7 @@ public class ExcelImportServer extends ImportBaseService { */ private Map getTitleMap(Iterator rows, ImportParams params, List excelCollection) { - Map titlemap = new HashMap(); + Map titlemap = new LinkedHashMap(); Iterator cellTitle; String collectionName = null; ExcelCollectionParams collectionParams = null; @@ -469,10 +470,25 @@ public class ExcelImportServer extends ImportBaseService { List excelCollection) { if (params.getImportFields() != null) { - for (int i = 0, le = params.getImportFields().length; i < le; i++) { - if (!titlemap.containsValue(params.getImportFields()[i])) { + if (params.isNeedCheckOrder()) { // 同时校验列顺序 + + if (params.getImportFields().length != titlemap.size()) { + LOGGER.error("excel列顺序不一致"); throw new ExcelImportException(ExcelImportEnum.IS_NOT_A_VALID_TEMPLATE); } + int i = 0; + for (String title : titlemap.values()) { + if (!StringUtils.equals(title, params.getImportFields()[i++])) { + LOGGER.error("excel列顺序不一致"); + throw new ExcelImportException(ExcelImportEnum.IS_NOT_A_VALID_TEMPLATE); + } + } + } else { + for (int i = 0, le = params.getImportFields().length; i < le; i++) { + if (!titlemap.containsValue(params.getImportFields()[i])) { + throw new ExcelImportException(ExcelImportEnum.IS_NOT_A_VALID_TEMPLATE); + } + } } } else { Collection collection = excelParams.values();