Доступ к ячейке рабочего листа
Доступ к ячейкам на рабочем листе
Каждый рабочий лист содержит свойство с именем Cells, которое на самом деле представляет собой коллекцию объектов GridCell, где объект GridCell представляет ячейку в Aspose.Cells.GridWeb. Возможно получить доступ к любой ячейке, используя Aspose.Cells.GridWeb. Существует два предпочтительных метода, каждый из которых обсуждается ниже.
Использование имени ячейки
У всех ячеек есть уникальное имя. Например, A1, A2, B1, B2 и т. д. Aspose.Cells.GridWeb позволяет разработчикам получить доступ к любой желаемой ячейке, используя имя ячейки. Просто передайте имя ячейки (в качестве индекса) в коллекцию Cells GridWorksheet.
Примечание
Доступ к GridCell, используя cells[cellName], может потреблять больше памяти, он всегда будет создавать новый объект ячейки (GridCell), независимо от того, существует ли ячейка или нет.
Использование индексов строки и столбца
Ячейку также можно распознать по ее расположению в терминах индексов строки и столбца. Просто передайте индексы строки и столбца ячейке в коллекцию Cells GridWorksheet. Этот подход быстрее, чем предыдущий.
Лучшие практики:
Если мы хотим получить значение ячейки или стиль ячейки и не хотим выполнять операцию обновления, мы можем использовать метод CheckCell, который вернет null, если ячейка не существует, это сэкономит память.
GridCells cells = GridWeb1.ActiveSheet.Cells;
GridCell cell = cells.CheckCell(1, 1);
if(cell!=null)
{
Console.WriteLine(cell.ToString());
}
Лучшие практики:
Итерация по ячейкам
если мы хотим получить доступ ко всем ячейкам в листе по одной, мы можем использовать итераторы для обхода существующих ячеек. это позволит экономить память.
GridCells cells = GridWeb1.ActiveSheet.Cells;
foreach (GridCell c in cells)
{
Console.WriteLine(c.ToString());
}
сравните нижеприведенный код, который является плохим, это приведет к созданию всех объектов ячеек, независимо от того, является ли он нулевым, что вызовет проблемы с памятью, поэтому, пожалуйста, не используйте этот способ
GridCells cells = GridWeb1.ActiveSheet.Cells;
for(int r=0;r< cells.MaxRow;r++)
{
for(int c=0;c< cells.MaxColumn; c++)
{
Console.WriteLine(cells[r,c].ToString());
}
}