private FormatBase GetNumberFormat(string format, object value)
        {
            FormatBase expectedFormat = NumberFormats.Where(f => f.Format == "G").ToList().FirstOrDefault();

            if (!string.IsNullOrEmpty(format))
            {
                string       leader = format[0].ToString();
                NumberFormat n      = NumberFormats.Where(f => f.Format == leader).ToList().FirstOrDefault() as NumberFormat;
                if (n != null)
                {
                    string decimalPlaces = format.Substring(1);
                    if (!string.IsNullOrEmpty(decimalPlaces))
                    {
                        int num;
                        if (Int32.TryParse(decimalPlaces, out num))
                        {
                            n.DecimalPlaces = num;
                        }
                    }
                    expectedFormat = n;
                }
                else
                {
                    DateFormat d = NumberFormats.Where(f => f.Name == "Date").FirstOrDefault() as DateFormat;
                    if (d.IsDateFormat(format, value))
                    {
                        expectedFormat = d;
                    }
                }
            }
            return(expectedFormat);
        }
        private void InitialNumberFormats()
        {
            NumberFormat generalFormat = new NumberFormat();

            generalFormat.Name             = "General";
            generalFormat.Format           = "G";
            generalFormat.PropertyChanged += generalFormat_PropertyChanged;
            NoDecimalPlacesList.Add(generalFormat);
            NumberFormats.Add(generalFormat);

            NumberFormat numberFormat = new NumberFormat();

            numberFormat.Name             = "Number";
            numberFormat.Format           = "N";
            numberFormat.PropertyChanged += generalFormat_PropertyChanged;
            NumberFormats.Add(numberFormat);

            NumberFormat currencyFormat = new NumberFormat();

            currencyFormat.Name             = "Currency";
            currencyFormat.Format           = "C";
            currencyFormat.PropertyChanged += generalFormat_PropertyChanged;
            NumberFormats.Add(currencyFormat);

            NumberFormat percentFormat = new NumberFormat();

            percentFormat.Name             = "Percentage";
            percentFormat.Format           = "P";
            percentFormat.PropertyChanged += generalFormat_PropertyChanged;
            NumberFormats.Add(percentFormat);

            NumberFormat exponentialFormat = new NumberFormat();

            exponentialFormat.Name             = "Scientific";
            exponentialFormat.Format           = "E";
            exponentialFormat.PropertyChanged += generalFormat_PropertyChanged;
            NumberFormats.Add(exponentialFormat);

            DateFormat dateFormat = new DateFormat();

            dateFormat.Name             = "Date";
            dateFormat.Format           = "f";
            dateFormat.PropertyChanged += generalFormat_PropertyChanged;
            NumberFormats.Add(dateFormat);
            NoDecimalPlacesList.Add(dateFormat);


            SelectedNumberFormat = generalFormat;

            var cell = _cellRange.FirstOrDefault();
            var row  = _flex.Rows[cell.Row] as ExcelRow;
            var col  = _flex.Columns[cell.Column];

            FormatBase defaultFormat = generalFormat;

            if (row != null)
            {
                var cs = row.GetCellStyle(col) as ExcelCellStyle;
                var cv = row.GetValue(col);
                defaultFormat = GetNumberFormat(cs != null ? cs.Format : null, cv);
            }
            SelectedNumberFormat = defaultFormat;
            SelectedNumberFormat.PropertyChanged += SelectedNumberFormat_PropertyChanged;

            InvalidateText();
        }