Delete Excel.Extensions
This commit is contained in:
parent
6acba1a542
commit
3f4d7f45b7
@ -1,26 +0,0 @@
|
||||
namespace RhSolutions.ExcelExtensions;
|
||||
|
||||
public sealed class Cell
|
||||
{
|
||||
public Table ParentTable { get; }
|
||||
public Row ParentRow
|
||||
{
|
||||
get => ParentTable.Rows[ParentTable.Range.Row - _range.Row];
|
||||
}
|
||||
public Column ParentColumn
|
||||
{
|
||||
get => ParentTable.Columns[ParentTable.Range.Column - _range.Column];
|
||||
}
|
||||
public object Value
|
||||
{
|
||||
get => _range.Cells[1, 1].Value2;
|
||||
set => _range.Cells[1, 1].Value2 = value;
|
||||
}
|
||||
private Range _range;
|
||||
|
||||
public Cell(Range range, Table table)
|
||||
{
|
||||
_range = range;
|
||||
ParentTable = table;
|
||||
}
|
||||
}
|
@ -1,65 +0,0 @@
|
||||
namespace RhSolutions.ExcelExtensions;
|
||||
|
||||
public sealed class Column
|
||||
{
|
||||
public Table ParentTable { get; }
|
||||
public string Header
|
||||
{
|
||||
get => _range.Cells[1, 1].Value2.ToString() ?? String.Empty;
|
||||
}
|
||||
public int Index
|
||||
{
|
||||
get => _range.Column - ParentTable.Range.Column;
|
||||
}
|
||||
public int Length
|
||||
{
|
||||
get => _range.Rows.Count;
|
||||
}
|
||||
private Cell[] _cells;
|
||||
private readonly Range _range;
|
||||
|
||||
public Column(Range range, Table table)
|
||||
{
|
||||
_cells = new Cell[range.Rows.Count];
|
||||
_range = range;
|
||||
ParentTable = table ??
|
||||
throw new ArgumentNullException("table");
|
||||
}
|
||||
|
||||
public Cell this[int index]
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_cells[index] == null)
|
||||
{
|
||||
_cells[index] = new Cell(_range.Cells[index + 1, 1], ParentTable);
|
||||
return _cells[index];
|
||||
}
|
||||
else
|
||||
{
|
||||
return _cells[index];
|
||||
}
|
||||
}
|
||||
set
|
||||
{
|
||||
if (_cells[index] == null)
|
||||
{
|
||||
_cells[index] = new Cell(_range.Cells[index + 1, 1], ParentTable);
|
||||
_cells[index].Value = value;
|
||||
}
|
||||
else
|
||||
{
|
||||
_cells[index].Value = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Column AddLeft()
|
||||
{
|
||||
_range.EntireColumn
|
||||
.Insert(XlInsertShiftDirection.xlShiftToRight,
|
||||
XlInsertFormatOrigin.xlFormatFromRightOrBelow);
|
||||
|
||||
return ParentTable.Columns[this.Index - 1];
|
||||
}
|
||||
}
|
@ -1,49 +0,0 @@
|
||||
using System.Collections;
|
||||
|
||||
namespace RhSolutions.ExcelExtensions;
|
||||
|
||||
public class Columns : IEnumerable<Column>
|
||||
{
|
||||
public Table ParentTable { get; }
|
||||
public int Length
|
||||
{
|
||||
get => _range.Columns.Count;
|
||||
}
|
||||
private Column[] _columns;
|
||||
private Range _range;
|
||||
|
||||
public Columns(Table parentTable)
|
||||
{
|
||||
ParentTable = parentTable;
|
||||
_range = parentTable.Range;
|
||||
_columns = new Column[Length];
|
||||
}
|
||||
|
||||
public Column this[int index]
|
||||
{
|
||||
get
|
||||
{
|
||||
if (index < 0 || index >= Length)
|
||||
{
|
||||
throw new IndexOutOfRangeException();
|
||||
}
|
||||
|
||||
if (_columns[index] == null)
|
||||
{
|
||||
_columns[index] = new Column(_range.Columns[index + 1], ParentTable);
|
||||
return _columns[index];
|
||||
}
|
||||
else
|
||||
{
|
||||
return _columns[index];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerator<Column> GetEnumerator()
|
||||
{
|
||||
return new ColumnsEnumerator(this);
|
||||
}
|
||||
|
||||
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
|
||||
}
|
@ -1,52 +0,0 @@
|
||||
using System.Collections;
|
||||
|
||||
namespace RhSolutions.ExcelExtensions;
|
||||
|
||||
public class ColumnsEnumerator: IEnumerator<Column>
|
||||
{
|
||||
private Columns _columns;
|
||||
private int position = -1;
|
||||
object IEnumerator.Current
|
||||
{
|
||||
get
|
||||
{
|
||||
return Current;
|
||||
}
|
||||
}
|
||||
|
||||
public Column Current
|
||||
{
|
||||
get
|
||||
{
|
||||
try
|
||||
{
|
||||
return _columns[position];
|
||||
}
|
||||
catch (IndexOutOfRangeException)
|
||||
{
|
||||
throw new InvalidOperationException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public ColumnsEnumerator(Columns columns)
|
||||
{
|
||||
_columns = columns;
|
||||
}
|
||||
|
||||
public bool MoveNext()
|
||||
{
|
||||
position++;
|
||||
return (position < _columns.Length);
|
||||
}
|
||||
|
||||
public void Reset()
|
||||
{
|
||||
position = -1;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net472;net6.0-windows7.0</TargetFrameworks>
|
||||
<LangVersion>10</LangVersion>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="ExcelDna.Interop" Version="15.0.1" />
|
||||
<PackageReference Include="System.Net.Http" Version="4.3.4" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
@ -1,54 +0,0 @@
|
||||
namespace RhSolutions.ExcelExtensions;
|
||||
|
||||
public sealed class Row
|
||||
{
|
||||
public Table ParentTable { get; }
|
||||
public int Index
|
||||
{
|
||||
get => _range.Row - ParentTable.Range.Row;
|
||||
}
|
||||
public int Length
|
||||
{
|
||||
get => _range.Columns.Count;
|
||||
}
|
||||
private readonly Cell[] _cells;
|
||||
private readonly Range _range;
|
||||
|
||||
public Row(Range range, Table table)
|
||||
{
|
||||
_cells = new Cell[range.Columns.Count];
|
||||
_range = range;
|
||||
ParentTable = table ??
|
||||
throw new ArgumentNullException("table");
|
||||
}
|
||||
|
||||
public Cell this[int index]
|
||||
{
|
||||
get
|
||||
{
|
||||
if (index < 0 || index >= Length)
|
||||
{
|
||||
throw new IndexOutOfRangeException();
|
||||
}
|
||||
|
||||
if (_cells[index] == null)
|
||||
{
|
||||
_cells[index] = new Cell(_range.Cells[1, index + 1], ParentTable);
|
||||
return _cells[index];
|
||||
}
|
||||
else
|
||||
{
|
||||
return _cells[index];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Cell this[string header]
|
||||
{
|
||||
get
|
||||
{
|
||||
int columnIndex = ParentTable.ColumnByHeader(header).Index;
|
||||
return this[columnIndex];
|
||||
}
|
||||
}
|
||||
}
|
@ -1,44 +0,0 @@
|
||||
using System.Collections;
|
||||
|
||||
namespace RhSolutions.ExcelExtensions;
|
||||
|
||||
public class Rows : IEnumerable<Row>
|
||||
{
|
||||
public Table ParentTable { get; }
|
||||
public int Length
|
||||
{
|
||||
get => _range.Rows.Count;
|
||||
}
|
||||
private Row[] _rows;
|
||||
private Range _range;
|
||||
|
||||
public Rows(Table parentTable)
|
||||
{
|
||||
ParentTable = parentTable;
|
||||
_range = parentTable.Range;
|
||||
_rows = new Row[Length];
|
||||
}
|
||||
|
||||
public Row this[int index]
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_rows[index] == null)
|
||||
{
|
||||
_rows[index] = new Row(_range.Rows[index + 1], ParentTable);
|
||||
return _rows[index];
|
||||
}
|
||||
else
|
||||
{
|
||||
return _rows[index];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerator<Row> GetEnumerator()
|
||||
{
|
||||
return new RowsEnumerator(this);
|
||||
}
|
||||
|
||||
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
|
||||
}
|
@ -1,52 +0,0 @@
|
||||
using System.Collections;
|
||||
|
||||
namespace RhSolutions.ExcelExtensions;
|
||||
|
||||
public class RowsEnumerator : IEnumerator<Row>
|
||||
{
|
||||
private Rows _rows;
|
||||
private int position = -1;
|
||||
object IEnumerator.Current
|
||||
{
|
||||
get
|
||||
{
|
||||
return Current;
|
||||
}
|
||||
}
|
||||
|
||||
public Row Current
|
||||
{
|
||||
get
|
||||
{
|
||||
try
|
||||
{
|
||||
return _rows[position];
|
||||
}
|
||||
catch (IndexOutOfRangeException)
|
||||
{
|
||||
throw new InvalidOperationException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public RowsEnumerator(Rows rows)
|
||||
{
|
||||
_rows = rows;
|
||||
}
|
||||
|
||||
public bool MoveNext()
|
||||
{
|
||||
position++;
|
||||
return (position < _rows.Length);
|
||||
}
|
||||
|
||||
public void Reset()
|
||||
{
|
||||
position = -1;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
@ -1,64 +0,0 @@
|
||||
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; }
|
||||
private Dictionary<string, Column> _columnsByHeader;
|
||||
|
||||
public Table(Range range)
|
||||
{
|
||||
Range = range;
|
||||
ParentTable = this;
|
||||
Rows = new Rows(this);
|
||||
Columns = new Columns(this);
|
||||
_columnsByHeader = new();
|
||||
|
||||
foreach(var column in Columns)
|
||||
{
|
||||
if (_columnsByHeader.ContainsKey(column.Header))
|
||||
{
|
||||
throw new ArgumentException($"Заголовок столбца {column.Header} не уникален");
|
||||
}
|
||||
else
|
||||
{
|
||||
_columnsByHeader.Add(column.Header, column);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Column ColumnByHeader(string header)
|
||||
{
|
||||
return _columnsByHeader[header];
|
||||
}
|
||||
|
||||
public Cell this[int row, int column]
|
||||
{
|
||||
get => this.Rows[row][column];
|
||||
}
|
||||
|
||||
public IEnumerable<Cell> Search(object item)
|
||||
{
|
||||
Range firstFound = Range.Find(item);
|
||||
if (firstFound == null)
|
||||
{
|
||||
yield break;
|
||||
}
|
||||
|
||||
Range nextFound = firstFound;
|
||||
|
||||
while (true)
|
||||
{
|
||||
yield return this[nextFound.Row - ParentTable.Range.Row, nextFound.Column - ParentTable.Range.Column];
|
||||
nextFound = Range.FindNext(nextFound);
|
||||
|
||||
if (nextFound.Row == firstFound.Row
|
||||
&& nextFound.Column == firstFound.Column)
|
||||
{
|
||||
yield break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
global using Microsoft.Office.Interop.Excel;
|
||||
global using System.Collections.Generic;
|
||||
global using Range = Microsoft.Office.Interop.Excel.Range;
|
Loading…
Reference in New Issue
Block a user