aboutsummaryrefslogtreecommitdiff
path: root/RhSolutions.AddIn/ExcelTable/ExcelTable.cs
diff options
context:
space:
mode:
authorSergey Chebotar <s.chebotar@gmail.com>2023-03-31 15:27:31 +0300
committerSergey Chebotar <s.chebotar@gmail.com>2023-03-31 15:27:31 +0300
commitf01228d94554669146137dea9614d87df22c01f3 (patch)
treed507329f02195f52dc16ec72934d2627833756b3 /RhSolutions.AddIn/ExcelTable/ExcelTable.cs
parentcdb153c988f0eaa1355bf53d27280e3d6eed92a4 (diff)
Add Excel Table classes
Diffstat (limited to 'RhSolutions.AddIn/ExcelTable/ExcelTable.cs')
-rw-r--r--RhSolutions.AddIn/ExcelTable/ExcelTable.cs53
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;
+ }
+ }
+ }
+}