| 
				
				
					
				
				
				 | 
			
			 | 
			@@ -59,9 +59,34 @@ public final class PoiElUtil { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				public static Object eval(String text, Map<String, Object> map) throws Exception {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					String tempText = new String(text);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					Object obj = innerEval(text, map);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					//如果没有被处理而且这个值找map中存在就处理这个值
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					if (tempText.equals(obj.toString()) && map.containsKey(tempText.split("\\.")[0])) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
						return PoiPublicUtil.getParamsValue(tempText, map);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					//如果没有被处理而且这个值找map中存在就处理这个值,找不到就返回空字符串
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					if (tempText.equals(obj.toString())) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
						if(map.containsKey(tempText.split("\\.")[0])){
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
							return PoiPublicUtil.getParamsValue(tempText, map);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
						}else{
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
							return "";
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
						}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					return obj;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				/**
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				 * 解析字符串,支持 le,fd,fn,!if,三目  找不到返回原值
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				 * @param text
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				 * @param map
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				 * @return
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				 * @throws Exception
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				 */
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				public static Object evalNoParse(String text, Map<String, Object> map) throws Exception {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					String tempText = new String(text);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					Object obj = innerEval(text, map);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					//如果没有被处理而且这个值找map中存在就处理这个值,找不到就返回空字符串
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					if (tempText.equals(obj.toString())) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
						if(map.containsKey(tempText.split("\\.")[0])){
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
							return PoiPublicUtil.getParamsValue(tempText, map);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
						}else{
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
							return obj;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
						}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					return obj;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				}
 | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -126,8 +151,8 @@ public final class PoiElUtil { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
						return Boolean.valueOf(PoiPublicUtil.getParamsValue(keys[0], map).toString());
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					if (keys.length == 3) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
						Object first = eval(keys[0], map);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
						Object second = eval(keys[2], map);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
						Object first = evalNoParse(keys[0], map);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
						Object second = evalNoParse(keys[2], map);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
						return PoiFunctionUtil.isTrue(first, keys[1], second);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					throw new ExcelExportException("判断参数不对");
 | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -242,19 +267,19 @@ public final class PoiElUtil { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					        for (int i = 1; i < keys.length-1; i++) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					            trinocular +=  ":" + keys[i];
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					        first = eval(trinocular, map);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					        second = eval(keys[keys.length-1].trim(), map);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					        first = evalNoParse(trinocular, map);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					        second = evalNoParse(keys[keys.length-1].trim(), map);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					    } else {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					        first = eval(keys[0].trim(), map);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					        first = evalNoParse(keys[0].trim(), map);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					        String trinocular = keys[1];
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                for (int i = 2; i < keys.length; i++) {
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    trinocular +=  ":" + keys[i];
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					        second = eval(trinocular, map);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					        second = evalNoParse(trinocular, map);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					    }
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					}else{
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					    first = eval(keys[0].trim(), map);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				        second = eval(keys[1].trim(), map);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					    first = evalNoParse(keys[0].trim(), map);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				        second = evalNoParse(keys[1].trim(), map);
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					}
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
					return isTrue(testText.split(" "), map) ? first : second;
 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
				}
 | 
		
		
	
	
		
			
				| 
				
					
				
				
				
				 | 
			
			 | 
			
  |