namespace com.azkoss.excellite { using System; using System.Collections; using System.Reflection; /// ///Collection of the descriptive names which are used ///to represent cells, ranges of cells, formulas, or constant values. /// /// ///You can use the labels of columns and rows on a worksheet to refer to the cells within ///those columns and rows. Or you can create descriptive names to represent cells, ranges of cells, ///formulas, or constant values. Labels can be used in formulas that refer to data on the same ///worksheet; if you want to represent a range on another worksheet, use a name. ///You can also create 3-D names that represent the same cell or range of cells across multiple worksheets. /// ///Following code demonstrates how to use formulas and named ranges. It shows next features: ///cell references (both absolute and relative), unary and binary operators, constand operands (integer and floating point), ///functions and named cell ranges. /// ///ws.Cells("A1").Value = 5 ///ws.Cells("A2").Value = 6 ///ws.Cells("A3").Value = 10 /// ///ws.Cells("C1").Formula = "=A1+A2" ///ws.Cells("C2").Formula = "=$A$1-A3" ///ws.Cells("C3").Formula = "=COUNT(A1:A3)" ///ws.Cells("C4").Formula = "=AVERAGE($A$1:$A$3)" ///ws.Cells("C5").Formula = "=SUM(A1:A3,2,3)" ///ws.Cells("C7").Formula = "= 123 - (-(-(23.5)))" /// ///ws.NamedRanges.Add("DataRange", ws.Cells.GetSubrange("A1", "A3")) ///ws.Cells("C8").Formula = "=MAX(DataRange)" /// ///Dim cr As CellRange = ws.Cells.GetSubrange("B9","C10") ///cr.Merged = True ///cr.Formula = "=A1*25" /// /// ///ws.Cells["A1"].Value = 5; ///ws.Cells["A2"].Value = 6; ///ws.Cells["A3"].Value = 10; /// ///ws.Cells["C1"].Formula = "=A1+A2"; ///ws.Cells["C2"].Formula = "=$A$1-A3"; ///ws.Cells["C3"].Formula = "=COUNT(A1:A3)"; ///ws.Cells["C4"].Formula = "=AVERAGE($A$1:$A$3)"; ///ws.Cells["C5"].Formula = "=SUM(A1:A3,2,3)"; ///ws.Cells["C7"].Formula = "= 123 - (-(-(23.5)))"; /// ///ws.NamedRanges.Add("DataRange", ws.Cells.GetSubrange("A1", "A3")); ///ws.Cells["C8"].Formula = "=MAX(DataRange)"; /// ///CellRange cr = ws.Cells.GetSubrange("B9", "C10"); ///cr.Merged = true; ///cr.Formula = "=A1*25"; /// /// ///ExcelCell.Formula public class NamedRangeCollection : IEnumerable { // Methods /// ///Initializes a new instance of the class. /// ///The worksheet to initialize NamedRangesCollection. internal NamedRangeCollection(ExcelWorksheet worksheet) { this.namesList = new ArrayList(); this.namedRanges = new ArrayList(); this.worksheet = worksheet; } /// ///Initializes a new instance of the NamedRangeCollection class. /// ///The worksheet to initialize NamedRangesCollection. ///The source named range collection to initialize NamedRangesCollection. internal NamedRangeCollection(ExcelWorksheet worksheet, NamedRangeCollection sourceNamedRanges) { this.namesList = new ArrayList(); this.namedRanges = new ArrayList(); this.worksheet = worksheet; for (int num1 = 0; num1 < sourceNamedRanges.NamedRanges.Count; num1++) { NamedRange range1 = sourceNamedRanges.NamedRanges[num1] as NamedRange; this.Add(range1.Name, range1.Range); } } /// ///Adds a new named range. Named ranges are used to represent cells, ranges of cells, ///formulas or constant values. /// ///The user-defined name. ///The range to be refered by name. /// ///You can use the labels of columns and rows on a worksheet to refer to the cells within ///those columns and rows. Or you can create descriptive names to represent cells, ranges of cells, ///formulas, or constant values. Labels can be used in formulas that refer to data on the same ///worksheet; if you want to represent a range on another worksheet, use a name. ///You can also create 3-D names that represent the same cell or range of cells across multiple worksheets. /// ///Following code demonstrates how to use formulas and named ranges. It shows next features: ///cell references (both absolute and relative), unary and binary operators, constand operands (integer and floating point), ///functions and named cell ranges. /// ///ws.Cells("A1").Value = 5 ///ws.Cells("A2").Value = 6 ///ws.Cells("A3").Value = 10 /// ///ws.Cells("C1").Formula = "=A1+A2" ///ws.Cells("C2").Formula = "=$A$1-A3" ///ws.Cells("C3").Formula = "=COUNT(A1:A3)" ///ws.Cells("C4").Formula = "=AVERAGE($A$1:$A$3)" ///ws.Cells("C5").Formula = "=SUM(A1:A3,2,3)" ///ws.Cells("C7").Formula = "= 123 - (-(-(23.5)))" /// ///ws.NamedRanges.Add("DataRange", ws.Cells.GetSubrange("A1", "A3")) ///ws.Cells("C8").Formula = "=MAX(DataRange)" /// ///Dim cr As CellRange = ws.Cells.GetSubrange("B9","C10") ///cr.Merged = True ///cr.Formula = "=A1*25" /// /// ///ws.Cells["A1"].Value = 5; ///ws.Cells["A2"].Value = 6; ///ws.Cells["A3"].Value = 10; /// ///ws.Cells["C1"].Formula = "=A1+A2"; ///ws.Cells["C2"].Formula = "=$A$1-A3"; ///ws.Cells["C3"].Formula = "=COUNT(A1:A3)"; ///ws.Cells["C4"].Formula = "=AVERAGE($A$1:$A$3)"; ///ws.Cells["C5"].Formula = "=SUM(A1:A3,2,3)"; ///ws.Cells["C7"].Formula = "= 123 - (-(-(23.5)))"; /// ///ws.NamedRanges.Add("DataRange", ws.Cells.GetSubrange("A1", "A3")); ///ws.Cells["C8"].Formula = "=MAX(DataRange)"; /// ///CellRange cr = ws.Cells.GetSubrange("B9", "C10"); ///cr.Merged = true; ///cr.Formula = "=A1*25"; /// /// ///ExcelCell.Formula public void Add(string name, CellRange range) { this.namedRanges.Add(new NamedRange(this, this.namedRanges.Count, name, range)); this.namesList.Add(name); } /// ///Deletes named range at specified index. /// ///The specified index. internal void DeleteInternal(int index) { this.namedRanges.RemoveAt(index); this.namesList.RemoveAt(index); } /// ///Returns an enumerator that can iterate through a collection. /// /// ///An ///that can be used to iterate through the collection. /// public IEnumerator GetEnumerator() { return this.namedRanges.GetEnumerator(); } // Properties /// ///Gets the number of named ranges contained in the collection. /// public int Count { get { return this.namedRanges.Count; } } ///Gets the NamedRange with ///the specified index or name. /// ///Gets the NamedRange at the specified index. /// ///Range index. public NamedRange this[int index] { get { return (this.namedRanges[index] as NamedRange); } } /// ///Gets the NamedRange with the specified name. /// ///Range name. public NamedRange this[string name] { get { for (int num1 = 0; num1 < this.namedRanges.Count; num1++) { NamedRange range1 = this.namedRanges[num1] as NamedRange; if (range1.Name == name) { return range1; } } return null; } } /// ///Gets or sets the named cell name list /// internal ArrayList NamedRanges { get { return this.namedRanges; } } /// ///Gets the user-defined names. You can use these names as shortcuts for ranges, cells, etc. /// ///The user-defined names. internal string[] Names { get { return (string[]) this.namesList.ToArray(typeof(string)); } } /// ///Gets or sets the user-defined names list. /// internal ArrayList NamesList { get { return this.namesList; } } // Fields private ArrayList namedRanges; /// ///The user-defined names list. /// private ArrayList namesList; private ExcelWorksheet worksheet; } }