internal static void ImportNamedRanges(XmlReader reader, ExcelXmlWorkbook book, Worksheet ws) { if (!reader.IsEmptyElement) { while (reader.Read() && !(reader.Name == "Names" && reader.NodeType == XmlNodeType.EndElement)) { if (reader.NodeType == XmlNodeType.Element) { if (reader.Name == "NamedRange") { Range range = null; string name = ""; foreach (XmlReaderAttributeItem xa in reader.GetAttributes()) { if (xa.LocalName == "Name" && xa.HasValue) { name = xa.Value; } if (xa.LocalName == "RefersTo" && xa.HasValue) { range = new Range(xa.Value); } } NamedRange nr = new NamedRange(range, name, ws); book.NamedRanges.Add(nr); } } } } }
internal void AddNamedRange(Range range, string name, Worksheet ws) { if (range.FirstCell() != null && range.FirstCell().GetParentBook() != this) { throw new InvalidOperationException("Named range parent book should be same"); } NamedRange namedRange = NamedRanges.Find(nr => nr.Name == name && nr.Worksheet == ws); if (namedRange == null) { namedRange = NamedRanges.Find(nr => nr.Range.Match(range)); if (namedRange == null) { if (name == "_FilterDatabase") { NamedRanges.Insert(0, new NamedRange(range, name, ws)); } else { NamedRanges.Add(new NamedRange(range, name, ws)); } } else { namedRange.Name = name; } } else { namedRange.Range = range; } }
internal string GetAutoFilterRange(Worksheet ws) { NamedRange namedRange = NamedRanges.Find( nr => nr.Name == "_FilterDatabase" && nr.Worksheet == ws); if (namedRange == null) { return(""); } return(namedRange.Range.NamedRangeReference(false)); }
internal static void ImportNamedRanges(XmlReader reader, ExcelXmlWorkbook book, Worksheet ws) { if (!reader.IsEmptyElement) { while (reader.Read() && !(reader.Name == "Names" && reader.NodeType == XmlNodeType.EndElement)) { if (reader.NodeType == XmlNodeType.Element) { if (reader.Name == "NamedRange") { Range range = null; string name = ""; foreach (XmlReaderAttributeItem xa in reader.GetAttributes()) { if (xa.LocalName == "Name" && xa.HasValue) name = xa.Value; if (xa.LocalName == "RefersTo" && xa.HasValue) range = new Range(xa.Value); } NamedRange nr = new NamedRange(range, name, ws); book.NamedRanges.Add(nr); } } } } }