Excel注解支持设置BigDecimal精度&舍入规则
This commit is contained in:
		
							parent
							
								
									7de5358dcd
								
							
						
					
					
						commit
						da146c2a70
					
				@ -4,6 +4,7 @@ import java.lang.annotation.ElementType;
 | 
			
		||||
import java.lang.annotation.Retention;
 | 
			
		||||
import java.lang.annotation.RetentionPolicy;
 | 
			
		||||
import java.lang.annotation.Target;
 | 
			
		||||
import java.math.BigDecimal;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 自定义导出Excel数据注解
 | 
			
		||||
@ -30,7 +31,7 @@ public @interface Excel
 | 
			
		||||
    public String dateFormat() default "";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 如果是字典类型,请设置字典的type值
 | 
			
		||||
     * 如果是字典类型,请设置字典的type值 (如: sys_user_sex)
 | 
			
		||||
     */
 | 
			
		||||
    public String dictType() default "";
 | 
			
		||||
 | 
			
		||||
@ -44,6 +45,16 @@ public @interface Excel
 | 
			
		||||
     */
 | 
			
		||||
    public String separator() default ",";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * BigDecimal 精度 默认:-1(默认不开启BigDecimal格式化)
 | 
			
		||||
     */
 | 
			
		||||
    public int scale() default -1;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * BigDecimal 舍入规则 默认:BigDecimal.ROUND_HALF_EVEN
 | 
			
		||||
     */
 | 
			
		||||
    public int roundingMode() default BigDecimal.ROUND_HALF_EVEN;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 导出类型(0数字 1字符串)
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
@ -8,6 +8,7 @@ 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;
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
import java.util.Comparator;
 | 
			
		||||
@ -546,10 +547,14 @@ public class ExcelUtil<T>
 | 
			
		||||
                {
 | 
			
		||||
                    cell.setCellValue(convertByExp(Convert.toStr(value), readConverterExp, separator));
 | 
			
		||||
                }
 | 
			
		||||
                else if (StringUtils.isNotEmpty(dictType))
 | 
			
		||||
                else if (StringUtils.isNotEmpty(dictType) && StringUtils.isNotNull(value))
 | 
			
		||||
                {
 | 
			
		||||
                    cell.setCellValue(convertDictByExp(Convert.toStr(value), dictType, separator));
 | 
			
		||||
                }
 | 
			
		||||
                else if (value instanceof BigDecimal && -1 != attr.scale())
 | 
			
		||||
                {
 | 
			
		||||
                    cell.setCellValue((((BigDecimal) value).setScale(attr.scale(), attr.roundingMode())).toString());
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    // 设置列类型
 | 
			
		||||
@ -896,7 +901,14 @@ public class ExcelUtil<T>
 | 
			
		||||
                    }
 | 
			
		||||
                    else
 | 
			
		||||
                    {
 | 
			
		||||
                        val = new BigDecimal(val.toString()); // 浮点格式处理
 | 
			
		||||
                        if ((Double) val % 1 > 0)
 | 
			
		||||
                        {
 | 
			
		||||
                            val = new BigDecimal(val.toString());
 | 
			
		||||
                        }
 | 
			
		||||
                        else
 | 
			
		||||
                        {
 | 
			
		||||
                            val = new DecimalFormat("0").format(val);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                else if (cell.getCellTypeEnum() == CellType.STRING)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user