ylx 7 years ago
parent
commit
7ee7359bdf

+ 42 - 7
ccb_fund_trusteeship/src/main/java/com/fuzamei/utils/ExcelUtil.java

@@ -2,6 +2,7 @@ package com.fuzamei.utils;
 
 import java.io.BufferedInputStream;
 import java.io.BufferedOutputStream;
+import java.io.Closeable;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
@@ -32,13 +33,24 @@ public class ExcelUtil {
 		}
 		try {
 			wb=new XSSFWorkbook(is);
-			wb2=new XSSFWorkbook(is2);
 		} catch (IOException e) {
 			try {
 				wb=new HSSFWorkbook(is);
+			} catch (IOException e1) {
+				throw new RuntimeException("非Excel文件");
+			}finally{
+				closeStream(wb,wb2,is,is2);
+			}
+		}
+		try {
+			wb2=new XSSFWorkbook(is2);
+		} catch (IOException e) {
+			try {
 				wb2=new HSSFWorkbook(is2);
 			} catch (IOException e1) {
 				throw new RuntimeException("非Excel文件");
+			}finally{
+				
 			}
 		}
 		Sheet sheet = wb.getSheet("Sheet1");
@@ -50,14 +62,37 @@ public class ExcelUtil {
 		double numericCellValue = cell.getNumericCellValue();
 		double numericCellValue2 = cell2.getNumericCellValue();
 		flag = (numericCellValue==numericCellValue2);
-		try {
-			wb.close();
-			wb2.close();
-		} catch (IOException e) {
-			throw new RuntimeException("流关闭异常");
-		}
+		
+		closeStream(wb,wb2,is,is2);
 		
 		return flag;
 	}
 	
+	private static final void closeStream(Closeable...c){
+		for (Closeable closeable : c) {
+			if(closeable!=null){
+				try {
+					closeable.close();
+				} catch (IOException e) {
+					closeable=null;
+				}
+			}
+		}
+	}
+	
+	public static void main(String[] args) {
+		File file=new File("C:\\Users\\fuzamei\\Desktop\\估值核算表.xlsx");
+	}
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
 }

+ 99 - 0
ccb_fund_trusteeship/src/main/java/com/fuzamei/utils/ValidationUtil.java

@@ -360,6 +360,105 @@ public class ValidationUtil {
 		return checkRangeAndAssignInt(obj,Integer.MIN_VALUE,Integer.MAX_VALUE);
 	}
 	
+	/**
+	 * @Title: checkRangeAndAssignDouble
+	 * @Description: 针对传入的参数进行校验--->Double类型
+	 * @Detail: 参数类型虽然是Object,但是要求数据类型是String或者是Double类型的数据,而且String类型还必须是能被解析成double的,否则会抛出异常.
+	 * 			而且还要限定数值的范围,超出范围的也会报异常.
+	 * 			如果一切都解析正常,说明解析没有问题,结果将解析后的数值以double类型返回
+	 * @Usage: 适用于数据判断的校验和赋值同时进行
+	 * @return double
+	 * @author ylx
+	 * @date 2017年12月26日 下午3:48:40
+	 */
+	public static double checkRangeAndAssignDouble(final Object obj, double min, double max) {
+		String number = null;
+		try {
+			if (obj == null) {
+				throw new NullPointerException();
+			}
+			number = String.class.cast(obj);
+			try {
+				Double num = Double.parseDouble(number);
+				if (num < min) {
+					throw new OutOfRangeException("最小值应该大于等于"+min);
+				}
+				if(num > max){
+					throw new OutOfRangeException("最大值应该小于等于"+max);
+				}
+				return num;
+			} catch (NumberFormatException e) {
+				throw new NumberFormatException();
+			}
+		} catch (Exception e) {
+			if (e instanceof NullPointerException) {
+				throw new NullPointerException("对象为null");
+			}
+			if (e instanceof NumberFormatException) {
+				throw new RuntimeException("数据类型解析异常");
+			}
+			if (e instanceof OutOfRangeException) {
+				throw new OutOfRangeException(e.getMessage());
+			}
+			Double num = null;
+			try {
+				num = Double.parseDouble(String.valueOf(num));
+			} catch (Exception e1) {
+				throw new RuntimeException("数字解析异常");
+			}
+			if (num < min) {
+				throw new RuntimeException("最小值应该大于等于"+min);
+			}
+			if(num > max){
+				throw new RuntimeException("最大值应该小于等于"+max);
+			}
+			return num;
+		}
+	}
+	
+	/**
+	 * @Title: checkRangeAndAssignDouble
+	 * @Description: 针对传入的参数进行校验--->Double类型
+	 * @Detail: 参数类型虽然是Object,但是要求数据类型是String或者是Double类型的数据,而且String类型还必须是能被解析成double的,否则会抛出异常.
+	 * 			而且还要限定数值的最大值,超出最大值的也会报异常.
+	 * 			如果一切都解析正常,说明解析没有问题,结果将解析后的数值以double类型返回
+	 * @Usage: 适用于数据判断的校验和赋值同时进行
+	 * @return double
+	 * @author ylx
+	 * @date 2017年12月26日 下午3:48:40
+	 */
+	public static double checkMinAndAssignDouble(final Object obj, double min) {
+		return checkRangeAndAssignDouble(obj,min,Double.MAX_VALUE);
+	}
+	/**
+	 * @Title: checkRangeAndAssignDouble
+	 * @Description: 针对传入的参数进行校验--->Double类型
+	 * @Detail: 参数类型虽然是Object,但是要求数据类型是String或者是Double类型的数据,而且String类型还必须是能被解析成double的,否则会抛出异常.
+	 * 			而且还要限定数值的最大值,超出最大值的也会报异常.
+	 * 			如果一切都解析正常,说明解析没有问题,结果将解析后的数值以double类型返回
+	 * @Usage: 适用于数据判断的校验和赋值同时进行
+	 * @return double
+	 * @author ylx
+	 * @date 2017年12月26日 下午3:48:40
+	 */
+	public static double checkMaxAndAssignDouble(final Object obj,double max) {
+		return checkRangeAndAssignDouble(obj,Double.MIN_VALUE,max);
+	}
+	/**
+	 * @Title: checkRangeAndAssignDouble
+	 * @Description: 针对传入的参数进行校验--->Double类型
+	 * @Detail: 参数类型虽然是Object,但是要求数据类型是String或者是Double类型的数据,而且String类型还必须是能被解析成double的,否则会抛出异常.
+	 * 			而且还要限定数值的最大值,超出最大值的也会报异常.
+	 * 			如果一切都解析正常,说明解析没有问题,结果将解析后的数值以double类型返回
+	 * @Usage: 适用于数据判断的校验和赋值同时进行
+	 * @return double
+	 * @author ylx
+	 * @date 2017年12月26日 下午3:48:40
+	 */
+	public static double checkAndAssignDouble(final Object obj) {
+		return checkRangeAndAssignDouble(obj,Double.MIN_VALUE,Double.MAX_VALUE);
+	}
+	
 	/**
 	 * @Title: range
 	 * @Description: 针对传入的参数进行校验--->Long类型