Exemplo n.º 1
0
 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);
                 }
             }
         }
     }
 }
Exemplo n.º 2
0
        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;
            }
        }
Exemplo n.º 3
0
        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));
        }