RhSolutions-AddIn/RhSolutions.ExcelExtensions/Table.cs

54 lines
1.2 KiB
C#
Raw Normal View History

2023-04-01 15:58:42 +03:00
namespace RhSolutions.ExcelExtensions;
2023-03-31 15:27:31 +03:00
2023-04-01 15:58:42 +03:00
public class Table
2023-03-31 15:27:31 +03:00
{
public Range Range { get; protected set; }
2023-04-01 15:58:42 +03:00
public Table ParentTable { get; protected set; }
public Rows Rows { get; }
public Columns Columns { get; }
2023-03-31 15:27:31 +03:00
2023-04-01 15:58:42 +03:00
public Table(Range range)
2023-03-31 15:27:31 +03:00
{
Range = range;
ParentTable = null;
2023-04-01 15:58:42 +03:00
Rows = new Rows(Range, this);
Columns = new Columns(Range, this);
2023-03-31 15:27:31 +03:00
}
2023-04-01 15:58:42 +03:00
public Table(Range range, Table table)
2023-03-31 15:27:31 +03:00
{
Range = range;
ParentTable = table;
2023-04-01 15:58:42 +03:00
Rows = new Rows(Range, this);
Columns = new Columns(Range, this);
2023-03-31 15:27:31 +03:00
}
2023-04-01 15:58:42 +03:00
public TableCell this[int row, int column]
2023-03-31 15:27:31 +03:00
{
get => new(Range.Cells[row + 1, column + 1], this);
}
2023-04-01 15:58:42 +03:00
public IEnumerable<TableCell> Find(object item)
2023-03-31 15:27:31 +03:00
{
Range firstFound = Range.Find(item);
if (firstFound == null)
{
yield break;
}
Range nextFound = firstFound;
while (true)
{
2023-04-01 15:58:42 +03:00
yield return new TableCell(nextFound, ParentTable ?? this);
2023-03-31 15:27:31 +03:00
nextFound = Range.FindNext(nextFound);
if (nextFound.Row == firstFound.Row
&& nextFound.Column == firstFound.Column)
{
yield break;
}
}
}
}