blob: 3713dc73cbd50d7b90fae76e4cf1b0802e39b356 [file] [log] [blame]
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;
}
}
}