|  | @@ -4,6 +4,7 @@ import java.io.IOException;
 | 
	
		
			
				|  |  |  import java.io.InputStream;
 | 
	
		
			
				|  |  |  import java.io.OutputStream;
 | 
	
		
			
				|  |  |  import java.lang.reflect.Field;
 | 
	
		
			
				|  |  | +import java.lang.reflect.Method;
 | 
	
		
			
				|  |  |  import java.math.BigDecimal;
 | 
	
		
			
				|  |  |  import java.text.DecimalFormat;
 | 
	
		
			
				|  |  |  import java.util.ArrayList;
 | 
	
	
		
			
				|  | @@ -308,6 +309,10 @@ public class ExcelUtil<T>
 | 
	
		
			
				|  |  |                          {
 | 
	
		
			
				|  |  |                              val = reverseByExp(Convert.toStr(val), attr.readConverterExp(), attr.separator());
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  | +                        else if (!attr.handler().equals(ExcelHandlerAdapter.class))
 | 
	
		
			
				|  |  | +                        {
 | 
	
		
			
				|  |  | +                            val = dataFormatHandlerAdapter(val, attr);
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  |                          ReflectUtils.invokeSetter(entity, propertyName, val);
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }
 | 
	
	
		
			
				|  | @@ -633,6 +638,10 @@ public class ExcelUtil<T>
 | 
	
		
			
				|  |  |                  {
 | 
	
		
			
				|  |  |                      cell.setCellValue((((BigDecimal) value).setScale(attr.scale(), attr.roundingMode())).toString());
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | +                else if (!attr.handler().equals(ExcelHandlerAdapter.class))
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    cell.setCellValue(dataFormatHandlerAdapter(value, attr));
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  else
 | 
	
		
			
				|  |  |                  {
 | 
	
		
			
				|  |  |                      // 设置列类型
 | 
	
	
		
			
				|  | @@ -779,6 +788,28 @@ public class ExcelUtil<T>
 | 
	
		
			
				|  |  |          return StringUtils.stripEnd(propertyString.toString(), separator);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 数据处理器
 | 
	
		
			
				|  |  | +     * 
 | 
	
		
			
				|  |  | +     * @param value 数据值
 | 
	
		
			
				|  |  | +     * @param excel 数据注解
 | 
	
		
			
				|  |  | +     * @return
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    public String dataFormatHandlerAdapter(Object value, Excel excel)
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        try
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            Object instance = excel.handler().newInstance();
 | 
	
		
			
				|  |  | +            Method formatMethod = excel.handler().getMethod("format", new Class[] { Object.class, String[].class });
 | 
	
		
			
				|  |  | +            value = formatMethod.invoke(instance, value, excel.args());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        catch (Exception e)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            log.error("不能格式化数据 " + excel.handler(), e.getMessage());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return Convert.toStr(value);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 合计统计信息
 | 
	
		
			
				|  |  |       */
 |