using System.Collections; namespace RhSolutions.ExcelTable; public sealed class ExcelColumn : ExcelTable, IEnumerable { public string Header { get => Range.Cells[1, 1].Value.ToString(); } public int Index { get => Range.Column - ParentTable.Range.Column; } public int Length { get => Range.Rows.Count; } public ExcelColumn(Range range, ExcelTable table) : base(range, table) { Range = range; ParentTable = table; } public ExcelTableCell this[int index] { get => new(Range.Cells[index + 1, 1], ParentTable); } public IEnumerator GetEnumerator() { return new ExcelColumnEnumerator(Range, ParentTable); } IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); public ExcelColumn AddLeft() { Range.EntireColumn .Insert(XlInsertShiftDirection.xlShiftToRight, XlInsertFormatOrigin.xlFormatFromRightOrBelow); return ParentTable.Columns[this.Index - 1]; } }