diff --git a/ClosedXML/Excel/NamedRanges/XLNamedRange.cs b/ClosedXML/Excel/NamedRanges/XLNamedRange.cs index b4a2799..4f648b8 100644 --- a/ClosedXML/Excel/NamedRanges/XLNamedRange.cs +++ b/ClosedXML/Excel/NamedRanges/XLNamedRange.cs @@ -4,18 +4,15 @@ namespace ClosedXML.Excel { - using System.Text.RegularExpressions; - - internal class XLNamedRange: IXLNamedRange + internal class XLNamedRange : IXLNamedRange { - - private List _rangeList = new List(); private readonly XLNamedRanges _namedRanges; - public XLNamedRange(XLNamedRanges namedRanges , String rangeName, String range, String comment = null) + + public XLNamedRange(XLNamedRanges namedRanges, String rangeName, String range, String comment = null) { Visible = true; Name = rangeName; - _rangeList.Add(range); + RangeList.Add(range); Comment = comment; _namedRanges = namedRanges; } @@ -24,24 +21,25 @@ { Visible = true; Name = rangeName; - ranges.ForEach(r => _rangeList.Add(r.RangeAddress.ToStringFixed(XLReferenceStyle.A1, true))); + ranges.ForEach(r => RangeList.Add(r.RangeAddress.ToStringFixed(XLReferenceStyle.A1, true))); Comment = comment; _namedRanges = namedRanges; } public String Name { get; set; } + public IXLRanges Ranges { get { var ranges = new XLRanges(); foreach (var rangeToAdd in - from rangeAddress in _rangeList.SelectMany(c=>c.Split(',')).Where(s=>s[0] != '"') + from rangeAddress in RangeList.SelectMany(c => c.Split(',')).Where(s => s[0] != '"') let match = XLHelper.NamedRangeReferenceRegex.Match(rangeAddress) select match.Groups["Sheet"].Success - ? _namedRanges.Workbook.WorksheetsInternal.Worksheet(match.Groups["Sheet"].Value).Range(match.Groups["Range"].Value) as IXLRangeBase - : _namedRanges.Workbook.Worksheets.SelectMany(sheet => sheet.Tables).Single(table => table.Name == match.Groups["Table"].Value).DataRange.Column(match.Groups["Column"].Value) ) + ? _namedRanges.Workbook.WorksheetsInternal.Worksheet(match.Groups["Sheet"].Value).Range(match.Groups["Range"].Value) as IXLRangeBase + : _namedRanges.Workbook.Worksheets.SelectMany(sheet => sheet.Tables).Single(table => table.Name == match.Groups["Table"].Value).DataRange.Column(match.Groups["Column"].Value)) { ranges.Add(rangeToAdd); } @@ -66,14 +64,16 @@ ranges.Add(rangeToAdd); return Add(ranges); } + public IXLRanges Add(IXLRange range) { - var ranges = new XLRanges {range}; + var ranges = new XLRanges { range }; return Add(ranges); } + public IXLRanges Add(IXLRanges ranges) { - ranges.ForEach(r => _rangeList.Add(r.ToString())); + ranges.ForEach(r => RangeList.Add(r.ToString())); return ranges; } @@ -81,27 +81,30 @@ { _namedRanges.Delete(Name); } + public void Clear() { - _rangeList.Clear(); - } - public void Remove(String rangeAddress) - { - _rangeList.Remove(rangeAddress); - } - public void Remove(IXLRange range) - { - _rangeList.Remove(range.ToString()); - } - public void Remove(IXLRanges ranges) - { - ranges.ForEach(r => _rangeList.Remove(r.ToString())); + RangeList.Clear(); } + public void Remove(String rangeAddress) + { + RangeList.Remove(rangeAddress); + } + + public void Remove(IXLRange range) + { + RangeList.Remove(range.ToString()); + } + + public void Remove(IXLRanges ranges) + { + ranges.ForEach(r => RangeList.Remove(r.ToString())); + } public override string ToString() { - String retVal = _rangeList.Aggregate(String.Empty, (agg, r) => agg + (r + ",")); + String retVal = RangeList.Aggregate(String.Empty, (agg, r) => agg + (r + ",")); if (retVal.Length > 0) retVal = retVal.Substring(0, retVal.Length - 1); return retVal; } @@ -111,32 +114,30 @@ get { return ToString(); } set { - _rangeList.Clear(); - _rangeList.Add(value); + RangeList.Clear(); + RangeList.Add(value); } } - internal List RangeList - { - get { return _rangeList; } - set { _rangeList = value; } - } + internal IList RangeList { get; set; } = new List(); public IXLNamedRange SetRefersTo(String range) { RefersTo = range; return this; } + public IXLNamedRange SetRefersTo(IXLRangeBase range) { - _rangeList.Clear(); - _rangeList.Add(range.RangeAddress.ToStringFixed(XLReferenceStyle.A1, true)); + RangeList.Clear(); + RangeList.Add(range.RangeAddress.ToStringFixed(XLReferenceStyle.A1, true)); return this; } + public IXLNamedRange SetRefersTo(IXLRanges ranges) { - _rangeList.Clear(); - ranges.ForEach(r => _rangeList.Add(r.RangeAddress.ToStringFixed(XLReferenceStyle.A1, true))); + RangeList.Clear(); + ranges.ForEach(r => RangeList.Add(r.RangeAddress.ToStringFixed(XLReferenceStyle.A1, true))); return this; } }