|  | @@ -8,6 +8,7 @@ import java.io.OutputStream;
 | 
											
												
													
														|  |  import java.lang.reflect.Field;
 |  |  import java.lang.reflect.Field;
 | 
											
												
													
														|  |  import java.lang.reflect.Method;
 |  |  import java.lang.reflect.Method;
 | 
											
												
													
														|  |  import java.math.BigDecimal;
 |  |  import java.math.BigDecimal;
 | 
											
												
													
														|  | 
 |  | +import java.text.DecimalFormat;
 | 
											
												
													
														|  |  import java.util.ArrayList;
 |  |  import java.util.ArrayList;
 | 
											
												
													
														|  |  import java.util.Arrays;
 |  |  import java.util.Arrays;
 | 
											
												
													
														|  |  import java.util.Comparator;
 |  |  import java.util.Comparator;
 | 
											
										
											
												
													
														|  | @@ -546,10 +547,14 @@ public class ExcelUtil<T>
 | 
											
												
													
														|  |                  {
 |  |                  {
 | 
											
												
													
														|  |                      cell.setCellValue(convertByExp(Convert.toStr(value), readConverterExp, separator));
 |  |                      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));
 |  |                      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
 |  |                  else
 | 
											
												
													
														|  |                  {
 |  |                  {
 | 
											
												
													
														|  |                      // 设置列类型
 |  |                      // 设置列类型
 | 
											
										
											
												
													
														|  | @@ -896,7 +901,14 @@ public class ExcelUtil<T>
 | 
											
												
													
														|  |                      }
 |  |                      }
 | 
											
												
													
														|  |                      else
 |  |                      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)
 |  |                  else if (cell.getCellTypeEnum() == CellType.STRING)
 |