| 
				
				
				
				 | 
			
			 | 
			@@ -1,13 +1,13 @@ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			/**
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * 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
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 *
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * 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
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 *
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 *  Unless required by applicable law or agreed to in writing, software
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * http://www.apache.org/licenses/LICENSE-2.0
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 *
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * Unless required by applicable law or agreed to in writing, software
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * See the License for the specific language governing permissions and
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -28,7 +28,6 @@ import java.util.List; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import java.util.Map;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import org.apache.commons.lang3.StringUtils;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import org.apache.poi.hssf.usermodel.HSSFDateUtil;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import org.apache.poi.ss.usermodel.Cell;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import org.apache.poi.ss.usermodel.CellType;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			import org.apache.poi.ss.usermodel.DateUtil;
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -45,19 +44,19 @@ import cn.afterturn.easypoi.util.PoiPublicUtil; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			/**
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * Cell 取值服务
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * 判断类型处理数据 1.判断Excel中的类型 2.根据replace替换值 3.handler处理数据 4.判断返回类型转化数据返回
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 *
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 * @author JueYue
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 *  2014年6月26日 下午10:42:28
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			public class CellValueServer {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private static final Logger LOGGER      = LoggerFactory.getLogger(CellValueServer.class);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private static final Logger LOGGER = LoggerFactory.getLogger(CellValueServer.class);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private List<String>        hanlderList = null;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private List<String> hanlderList = null;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /**
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 获取单元格内的值
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     *
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param cell
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param entity
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @return
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -68,8 +67,8 @@ public class CellValueServer { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        Object result = null;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if ("class java.util.Date".equals(xclass) || "class java.sql.Date".equals(xclass)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            || ("class java.sql.Time").equals(xclass)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            || ("class java.sql.Timestamp").equals(xclass)) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                || ("class java.sql.Time").equals(xclass)
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                || ("class java.sql.Timestamp").equals(xclass)) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            /*
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            if (Cell.CELL_TYPE_NUMERIC == cell.getCellType()) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                // 日期格式
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -79,10 +78,9 @@ public class CellValueServer { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                result = getDateData(entity, cell.getStringCellValue());
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            }*/
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            //FIX: 单元格yyyyMMdd数字时候使用 cell.getDateCellValue() 解析出的日期错误
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            if (HSSFDateUtil.isCellDateFormatted(cell)){
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                result = HSSFDateUtil.getJavaDate(cell.getNumericCellValue());
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            else {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            if (Cell.CELL_TYPE_NUMERIC == cell.getCellType() && DateUtil.isCellDateFormatted(cell)) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                result = DateUtil.getJavaDate(cell.getNumericCellValue());
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            } else {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                cell.setCellType(CellType.STRING);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                result = getDateData(entity, cell.getStringCellValue());
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            }
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -95,11 +93,13 @@ public class CellValueServer { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            if (("class java.sql.Timestamp").equals(xclass)) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                result = new Timestamp(((Date) result).getTime());
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } else if (Cell.CELL_TYPE_NUMERIC == cell.getCellType() && DateUtil.isCellDateFormatted(cell)) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            result = DateUtil.getJavaDate(cell.getNumericCellValue());
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } else {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            switch (cell.getCellType()) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                case Cell.CELL_TYPE_STRING:
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    result = cell.getRichStringCellValue() == null ? ""
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                        : cell.getRichStringCellValue().getString();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                            : cell.getRichStringCellValue().getString();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    break;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                case Cell.CELL_TYPE_NUMERIC:
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    if (DateUtil.isCellDateFormatted(cell)) {
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -123,7 +123,7 @@ public class CellValueServer { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    } catch (Exception e1) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                        try {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                            result = cell.getRichStringCellValue() == null ? ""
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                : cell.getRichStringCellValue().getString();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                    : cell.getRichStringCellValue().getString();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                        } catch (Exception e2) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                            throw new RuntimeException("获取公式类型的单元格失败", e2);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                        }
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -149,7 +149,7 @@ public class CellValueServer { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /**
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 获取日期类型数据
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     *
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @author JueYue
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     *  2013年11月26日
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param entity
 | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -179,7 +179,7 @@ public class CellValueServer { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /**
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 获取cell的值
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     *
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param object
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param excelParams
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param cell
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -192,7 +192,7 @@ public class CellValueServer { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        String xclass = "class java.lang.Object";
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (!(object instanceof Map)) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            Method setMethod = entity.getMethods() != null && entity.getMethods().size() > 0
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                ? entity.getMethods().get(entity.getMethods().size() - 1) : entity.getMethod();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    ? entity.getMethods().get(entity.getMethods().size() - 1) : entity.getMethod();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            Type[] ts = setMethod.getGenericParameterTypes();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            xclass = ts[0].toString();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }
 | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -219,7 +219,7 @@ public class CellValueServer { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                           String titleString) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ExcelImportEntity entity = excelParams.get(titleString);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        Method setMethod = entity.getMethods() != null && entity.getMethods().size() > 0
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            ? entity.getMethods().get(entity.getMethods().size() - 1) : entity.getMethod();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                ? entity.getMethods().get(entity.getMethods().size() - 1) : entity.getMethod();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        Type[] ts = setMethod.getGenericParameterTypes();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        String xclass = ts[0].toString();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        Object result = cellEntity.getValue();
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -231,13 +231,13 @@ public class CellValueServer { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /**
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 把后缀删除掉
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param result 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param suffix 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param result
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param suffix
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @return
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private Object hanlderSuffix(String suffix, Object result) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (StringUtils.isNotEmpty(suffix) && result != null
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            && result.toString().endsWith(suffix)) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                && result.toString().endsWith(suffix)) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            String temp = result.toString();
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            return temp.substring(0, temp.length() - suffix.length());
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -246,10 +246,10 @@ public class CellValueServer { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /**
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 根据返回类型获取返回值
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     *
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param xclass
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param result
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param entity 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param entity
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @return
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private Object getValueByType(String xclass, Object result, ExcelImportEntity entity) {
 | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -309,18 +309,18 @@ public class CellValueServer { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /**
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 调用处理接口处理值
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     *
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param dataHanlder
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param object
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param result
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param titleString
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @return
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    @SuppressWarnings({ "unchecked", "rawtypes" })
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    @SuppressWarnings({"unchecked", "rawtypes"})
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    private Object hanlderValue(IExcelDataHandler dataHanlder, Object object, Object result,
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                                String titleString) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (dataHanlder == null || dataHanlder.getNeedHandlerFields() == null
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            || dataHanlder.getNeedHandlerFields().length == 0) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                || dataHanlder.getNeedHandlerFields().length == 0) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            return result;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (hanlderList == null) {
 | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -334,7 +334,7 @@ public class CellValueServer { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /**
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 替换值
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * 
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     *
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param replace
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @param result
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     * @return
 | 
		
		
	
	
		
			
				| 
				
					
				
				
				
				 | 
			
			 | 
			
  |