|  | @@ -6,6 +6,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;
 | 
	
	
		
			
				|  | @@ -333,6 +334,10 @@ public class ExcelUtil<T>
 | 
	
		
			
				|  |  |                          {
 | 
	
		
			
				|  |  |                              val = reverseDictByExp(Convert.toStr(val), attr.dictType(), attr.separator());
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  | +                        else if (!attr.handler().equals(ExcelHandlerAdapter.class))
 | 
	
		
			
				|  |  | +                        {
 | 
	
		
			
				|  |  | +                            val = dataFormatHandlerAdapter(val, attr);
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  |                          else if (ColumnType.IMAGE == attr.cellType() && StringUtils.isNotEmpty(pictures))
 | 
	
		
			
				|  |  |                          {
 | 
	
		
			
				|  |  |                              PictureData image = pictures.get(row.getRowNum() + "_" + entry.getKey());
 | 
	
	
		
			
				|  | @@ -729,6 +734,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
 | 
	
		
			
				|  |  |                  {
 | 
	
		
			
				|  |  |                      // 设置列类型
 | 
	
	
		
			
				|  | @@ -902,6 +911,28 @@ public class ExcelUtil<T>
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  | +     * 数据处理器
 | 
	
		
			
				|  |  | +     * 
 | 
	
		
			
				|  |  | +     * @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);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  |       * 合计统计信息
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  |      private void addStatisticsData(Integer index, String text, Excel entity)
 |