diff options
author | Sergey Chebotar <s.chebotar@gmail.com> | 2023-04-01 15:58:42 +0300 |
---|---|---|
committer | Sergey Chebotar <s.chebotar@gmail.com> | 2023-04-01 15:58:42 +0300 |
commit | 448af8ecd7bf9db070e090c4b434da693ba0ae89 (patch) | |
tree | ad9a06664be368ebead54b82a965aa86f0a23cca /RhSolutions.ExcelExtensions/Table.cs | |
parent | da29243d1d661a6e304018e3317c2ca4ea495db8 (diff) |
Move Excel extensions to own project
Diffstat (limited to 'RhSolutions.ExcelExtensions/Table.cs')
-rw-r--r-- | RhSolutions.ExcelExtensions/Table.cs | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/RhSolutions.ExcelExtensions/Table.cs b/RhSolutions.ExcelExtensions/Table.cs new file mode 100644 index 0000000..a19a4b4 --- /dev/null +++ b/RhSolutions.ExcelExtensions/Table.cs @@ -0,0 +1,53 @@ +namespace RhSolutions.ExcelExtensions; + +public class Table +{ + public Range Range { get; protected set; } + public Table ParentTable { get; protected set; } + public Rows Rows { get; } + public Columns Columns { get; } + + public Table(Range range) + { + Range = range; + ParentTable = null; + Rows = new Rows(Range, this); + Columns = new Columns(Range, this); + } + + public Table(Range range, Table table) + { + Range = range; + ParentTable = table; + Rows = new Rows(Range, this); + Columns = new Columns(Range, this); + } + + public TableCell this[int row, int column] + { + get => new(Range.Cells[row + 1, column + 1], this); + } + + public IEnumerable<TableCell> Find(object item) + { + Range firstFound = Range.Find(item); + if (firstFound == null) + { + yield break; + } + + Range nextFound = firstFound; + + while (true) + { + yield return new TableCell(nextFound, ParentTable ?? this); + nextFound = Range.FindNext(nextFound); + + if (nextFound.Row == firstFound.Row + && nextFound.Column == firstFound.Column) + { + yield break; + } + } + } +} |