Exemple #1
0
        internal int AddName(TXlsNamedRange Range, TWorkbookGlobals Globals, TCellList CellList)
        {
            int  aCount = Count;
            bool IsInternal;
            bool ValidName = TXlsNamedRange.IsValidRangeName(Range.Name, out IsInternal);

            if (IsInternal)
            {
                Range.OptionFlags |= 0x020;
            }

            for (int i = 0; i < aCount; i++)
            {
                //Documentation is wrong. We need the sheet index (1 based) not the externsheetindex

                /*int rSheet=-1;
                 * if (this[i].RangeSheet>=0)
                 * {
                 *  rSheet = GetSheet(this[i].RangeSheet);
                 * }
                 */
                int rSheet = this[i].RangeSheet;
                if (
                    (rSheet == Range.NameSheetIndex) &&
                    (String.Equals(this[i].Name, Range.Name, StringComparison.CurrentCultureIgnoreCase))
                    )
                {
                    this[i] = new TNameRecord(Range, Globals, CellList);  //We have to be careful not to change name ordering, or formulas would point to wrong ranges.
                    //If we found it, then it *is* a valid name
                    return(i);
                }
            }
            if (!ValidName)
            {
                XlsMessages.ThrowException(XlsErr.ErrInvalidNameForARange, Convert.ToString(Range.Name));
            }
            Add(new TNameRecord(Range, Globals, CellList));
            CheckInternalNames(Range.OptionFlags, Globals);

            return(Count - 1);
        }
Exemple #2
0
        internal void ReplaceName(int Index, TXlsNamedRange Range, TWorkbookGlobals Globals, TCellList CellList)
        {
            bool IsInternal;
            bool ValidName = TXlsNamedRange.IsValidRangeName(Range.Name, out IsInternal);

            if (!ValidName)
            {
                XlsMessages.ThrowException(XlsErr.ErrInvalidNameForARange, Convert.ToString(Range.Name));
            }
            if (Index < 0 || Index >= Count)
            {
                XlsMessages.ThrowException(XlsErr.ErrXlsIndexOutBounds, Index, "Index", 0, Count - 1);
            }
            if (IsInternal)
            {
                Range.OptionFlags |= 0x020;
            }

            this[Index] = new TNameRecord(Range, Globals, CellList);             //We have to be careful not to change name ordering, or formulas would point to wrong ranges.
            CheckInternalNames(Range.OptionFlags, Globals);
        }