mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-31 18:28:43 +08:00 
			
		
		
		
	Excel注解支持设置BigDecimal精度&舍入规则
This commit is contained in:
		| @@ -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) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 RuoYi
					RuoYi