diff options
author | Sergey Chebotar <s.chebotar@gmail.com> | 2023-03-31 15:27:31 +0300 |
---|---|---|
committer | Sergey Chebotar <s.chebotar@gmail.com> | 2023-03-31 15:27:31 +0300 |
commit | f01228d94554669146137dea9614d87df22c01f3 (patch) | |
tree | d507329f02195f52dc16ec72934d2627833756b3 /RhSolutions.AddIn/ExcelTable/ExcelTable.cs | |
parent | cdb153c988f0eaa1355bf53d27280e3d6eed92a4 (diff) |
Add Excel Table classes
Diffstat (limited to 'RhSolutions.AddIn/ExcelTable/ExcelTable.cs')
-rw-r--r-- | RhSolutions.AddIn/ExcelTable/ExcelTable.cs | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/RhSolutions.AddIn/ExcelTable/ExcelTable.cs b/RhSolutions.AddIn/ExcelTable/ExcelTable.cs new file mode 100644 index 0000000..2788036 --- /dev/null +++ b/RhSolutions.AddIn/ExcelTable/ExcelTable.cs @@ -0,0 +1,53 @@ +namespace RhSolutions.ExcelTable; + +public class ExcelTable +{ + public Range Range { get; protected set; } + public ExcelTable ParentTable { get; protected set; } + public ExcelRows Rows { get; } + public ExcelColumns Columns { get; } + + public ExcelTable(Range range) + { + Range = range; + ParentTable = null; + Rows = new ExcelRows(Range, this); + Columns = new ExcelColumns(Range, this); + } + + public ExcelTable(Range range, ExcelTable table) + { + Range = range; + ParentTable = table; + Rows = new ExcelRows(Range, this); + Columns = new ExcelColumns(Range, this); + } + + public ExcelTableCell this[int row, int column] + { + get => new(Range.Cells[row + 1, column + 1], this); + } + + public IEnumerable<ExcelTableCell> Find(object item) + { + Range firstFound = Range.Find(item); + if (firstFound == null) + { + yield break; + } + + Range nextFound = firstFound; + + while (true) + { + yield return new ExcelTableCell(nextFound, ParentTable ?? this); + nextFound = Range.FindNext(nextFound); + + if (nextFound.Row == firstFound.Row + && nextFound.Column == firstFound.Column) + { + yield break; + } + } + } +} |