Доступ к GridCell на листе

Доступ к ячейке на листе

Мы можем получить доступ к любой ячейке листа, используя API Aspose.Cells.GridDesktop. Возможны три способа доступа к ячейке:

  • С использованием имени ячейки
  • С использованием индексов строки и столбца
  • Получение фокусированной ячейки

Давайте обсудим все вышеперечисленные три подхода по очереди.

Использование имени ячейки

Все ячейки в книге Excel имеют уникальное имя. Например, A1, A2, B1, B2 и т. д. Aspose.Cells.GridDesktop позволяет разработчикам получать доступ к любой нужной ячейке, используя её имя. Все, что нам нужно сделать, это передать имя ячейки (в качестве индекса) в коллекцию Cells объекта Worksheet.

Примечание

Доступ к GridCell, используя cells[cellName], может потреблять больше памяти, он всегда будет создавать новый объект ячейки (GridCell), независимо от того, существует ли ячейка или нет.

Использование индексов строки и столбца ячейки

Лучшие практики:

Если мы хотим получить значение ячейки или стиль ячейки и не хотим выполнять операцию обновления, мы можем использовать метод CheckCell, который вернет null, если ячейка не существует, это сэкономит память.

Worksheet sheet = gridDesktop1.GetActiveWorksheet();
// Получение доступа к ячейке с использованием её индексов строки и столбца
GridCell cell = sheet.Cells.CheckCell(1, 1);
   if(cell!=null)
   {
    Console.WriteLine(cell.ToString());
   }

Ячейку в книге Excel также можно найти, используя её расположение в терминах индексов строки и столбца. Все, что нам нужно сделать, это передать индексы строки и столбца ячейки в коллекцию Cells объекта Worksheet.

Примечание

Доступ к ячейке GridCell с использованием cells[rowIndex, columnIndex] может потреблять больше памяти. Это всегда будет создавать новый объект ячейки (GridCell), независимо от того, пустая ли ячейка или нет.

Получение фокусированной ячейки

Если вы точно не знаете, к какой ячейке нужен доступ, то Aspose.Cells.GridDesktop также позволяет получить доступ к ячейке, которая в данный момент находится в фокусе пользователя. С помощью этой функции можно позволить пользователю выбирать любую ячейку, а затем получить доступ к ней на стороне сервера. Это легко достигается с помощью метода GetFocusedCell объекта Worksheet.

Лучшие практики:

Итерация по ячейкам

если мы хотим получить доступ ко всем ячейкам в листе по одной, мы можем использовать итераторы для обхода существующих ячеек. это позволит экономить память.

   Worksheet sheet = gridDesktop1.GetActiveWorksheet();

   GridCells cells = sheet.Cells;
   foreach (GridCell c in cells)
  {
      Console.WriteLine(c.ToString());
   }

сравните нижеприведенный код, который является плохим, это приведет к созданию всех объектов ячеек, независимо от того, является ли он нулевым, что вызовет проблемы с памятью, поэтому, пожалуйста, не используйте этот способ

 Worksheet sheet = gridDesktop1.GetActiveWorksheet();
 for(int r=0;r< sheet.RowsCount;r++)
 {
     for(int c=0;c< sheet.ColumnsCount; c++)
     {
         Console.WriteLine(sheet.Cells[r,c].ToString());
     }
 }