| using System; | 
 | using System.Collections.Generic; | 
 | using System.Globalization; | 
 | using System.Linq; | 
 | using System.Text; | 
 | using System.Text.RegularExpressions; | 
 | using System.Threading.Tasks; | 
 |  | 
 | namespace EPPlusExcelFormDemo | 
 | { | 
 |     internal static class ConvertUtil | 
 |     { | 
 |         internal static bool IsNumeric(object candidate) | 
 |         { | 
 |             if (candidate == null) return false; | 
 |             return (candidate.GetType().IsPrimitive || candidate is double || candidate is decimal || candidate is DateTime || candidate is TimeSpan || candidate is long); | 
 |         } | 
 |  | 
 |         internal static bool IsNumericString(object candidate) | 
 |         { | 
 |             if (candidate != null) | 
 |             { | 
 |                 return Regex.IsMatch(candidate.ToString(), @"^[\d]+(\,[\d])?"); | 
 |             } | 
 |             return false; | 
 |         } | 
 |  | 
 |         /// <summary> | 
 |         /// Convert an object value to a double  | 
 |         /// </summary> | 
 |         /// <param name="v"></param> | 
 |         /// <param name="ignoreBool"></param> | 
 |         /// <returns></returns> | 
 |         internal static double GetValueDouble(object v, bool ignoreBool = false) | 
 |         { | 
 |             double d; | 
 |             try | 
 |             { | 
 |                 if (ignoreBool && v is bool) | 
 |                 { | 
 |                     return 0; | 
 |                 } | 
 |                 if (IsNumeric(v)) | 
 |                 { | 
 |                     if (v is DateTime) | 
 |                     { | 
 |                         d = ((DateTime)v).ToOADate(); | 
 |                     } | 
 |                     else if (v is TimeSpan) | 
 |                     { | 
 |                         d = DateTime.FromOADate(0).Add((TimeSpan)v).ToOADate(); | 
 |                     } | 
 |                     else | 
 |                     { | 
 |                         d = Convert.ToDouble(v, CultureInfo.InvariantCulture); | 
 |                     } | 
 |                 } | 
 |                 else | 
 |                 { | 
 |                     d = 0; | 
 |                 } | 
 |             } | 
 |  | 
 |             catch | 
 |             { | 
 |                 d = 0; | 
 |             } | 
 |             return d; | 
 |         } | 
 |     } | 
 | } |