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(); }