Я пытаюсь создать класс оболочки C # для:
sheet.Cells[int row, int colmn].Value = "some value";
Есть какие-то предложения или нужно как-то обойти это?
Заранее спасибо.
Комментарий:
Чтобы уточнить,
лист является листом Excel. У нас есть сторонний компонент для написания отчетов Excel. Теперь нам нужно обновить отчеты, потому что этот сторонний компонент обновился. Что мне нужно сделать, это создать класс, который будет имитировать
sheet.Cell[int row, int colmn].Value = “Some Value”;
Я ищу то, что описано в этой статье:
http://pietschsoft.com/post/2007/03/17/C-Give-your-object-a-Default-Indexer-Property.aspx
Однако, когда индексатор имеет два параметра, это усложняется.
Это решение, которое я придумал. Вероятно, это не самое лучшее решение. Однако я не мог найти другого выхода.
public class SheetClass
{
public SheetWrapper Cells;
public SheetClass(Worksheet _sheet)
{
Cells = new SheetWrapper(_sheet);
}
}
public class SheetWrapper
{
private readonly Worksheet sheet;
public PFCell this[int x, int y]
{
get { return new PFCell(this.sheet, x-1, y-1); }
}
public SheetWrapper(Worksheet sheet)
{
this.sheet = sheet;
}
}
public class PFCell
{
Worksheet ws;
int x;
int y;
public PFCell(Worksheet ws, int x, int y)
{
this.ws = ws;
this.x = x;
this.y = y;
}
public object Value
{
get { return ws.Cells[x,y].Value; }
set { ws.Cells[x,y].Value = value; }
}
}
Тогда на странице я могу сделать следующее:
SheetClass sc = new SheetClass(sheet);
sc.Cells[1, 1].Value = "test";
Если есть лучший способ сделать это, пожалуйста, дайте мне знать.