Создание доступа и копирование именованных диапазонов

Введение

Обычно для обозначения отдельных ячеек используются метки столбцов и строк. Возможно создание описательных имен для представления ячеек, диапазонов ячеек, формул или постоянных значений. Слово имя может обозначать строку символов, представляющую ячейку, диапазон ячеек, формулу или постоянное значение. Присвоение имени диапазону означает, что к этому диапазону ячеек можно обращаться по его имени. Используйте понятные имена, такие как Продукты, для обращения к труднопонимаемым диапазонам, например Продажи!C20:C30. Метки могут использоваться в формулах, обращающихся к данным на той же листе; если вы хотите обозначить диапазон на другом листе, можно использовать имя. *Именованные диапазоны являются одной из самых мощных функций Microsoft Excel, особенно при использовании в качестве исходного диапазона для элементов управления списками, сводных таблиц, диаграмм и т. д.

Работа с именованным диапазоном с помощью Microsoft Excel

Создание именованных диапазонов

В следующих шагах описано, как назвать ячейку или диапазон ячеек в MS Excel. Этот метод применим к Microsoft Office Excel 2003, Microsoft Excel 97, 2000 и 2002.

  1. Выберите ячейку или диапазон ячеек, которые вы хотите именовать.
  2. Нажмите Поле с именем в левом конце строки формул.
  3. Введите имя для ячеек.
  4. Нажмите ENTER.

Работа с именованным диапазоном с использованием Aspose.Cells

Здесь мы используем API Aspose.Cells для выполнения этой задачи. Aspose.Cells предоставляет класс Workbook, который представляет файл Microsoft Excel. Класс Workbook содержит коллекцию Worksheets, которая позволяет получить доступ к каждому листу в файле Excel. Лист представлен классом Worksheet. Класс Worksheet предоставляет коллекцию Cells.

Создание именованного диапазона

Можно создать именованный диапазон, вызвав перегруженный метод CreateRange коллекции Cells. Типичная версия метода CreateRange принимает следующие параметры:

  • Имя верхней левой ячейки, имя верхней левой ячейки в диапазоне.
  • Имя нижней правой ячейки, имя нижней правой ячейки в диапазоне.

Когда вызывается метод CreateRange, он возвращает только что созданный диапазон в виде экземпляра класса Range. Используйте этот объект Range, чтобы настроить именованный диапазон. Например, установите имя диапазона, используя свойство Name. В следующем примере показано, как создать именованный диапазон ячеек, который простирается от B4:G14.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// The path to the documents directory.
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
// Opening the Excel file through the file stream
Workbook workbook = new Workbook(dataDir + "book1.xls");
// Accessing the first worksheet in the Excel file
Worksheet worksheet = workbook.Worksheets[0];
// Creating a named range
Range range = worksheet.Cells.CreateRange("B4", "G14");
// Setting the name of the named range
range.Name = "TestRange";
// Saving the modified Excel file
workbook.Save(dataDir + "output.out.xls");

Ввод данных в ячейки именованного диапазона

Можно вставить данные в отдельные ячейки диапазона, следуя образцу

  • C#: Range[row,column]
  • VB: Range(row,column)

Предположим, у вас есть именованный диапазон ячеек, который охватывает A1:C4. Матрица состоит из 4 * 3 = 12 ячеек. Отдельные ячейки диапазона упорядочены последовательно: Диапазон[0,0], Диапазон[0,1], Диапазон[0,2], Диапазон[1,0], Диапазон[1,1], Диапазон[1,2], Диапазон[2,0], Диапазон[2,1], Диапазон[2,2], Диапазон[3,0], Диапазон[3,1], Диапазон[3,2].

Используйте следующие свойства для определения ячеек в диапазоне:

  • FirstRow возвращает индекс первой строки в именованном диапазоне.
  • FirstColumn возвращает индекс первого столбца в именованном диапазоне.
  • RowCount возвращает общее количество строк в именованном диапазоне.
  • ColumnCount возвращает общее количество столбцов в именованном диапазоне.

В следующем примере показано, как ввести некоторые значения в ячейки указанного диапазона.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// The path to the documents directory.
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
// Create directory if it is not already present.
bool IsExists = System.IO.Directory.Exists(dataDir);
if (!IsExists)
System.IO.Directory.CreateDirectory(dataDir);
// Instantiate a new Workbook.
Workbook workbook = new Workbook();
// Get the first worksheet in the workbook.
Worksheet worksheet1 = workbook.Worksheets[0];
// Create a range of cells based on H1:J4.
Range range = worksheet1.Cells.CreateRange("H1", "J4");
// Name the range.
range.Name = "MyRange";
// Input some data into cells in the range.
range[0, 0].PutValue("USA");
range[0, 1].PutValue("SA");
range[0, 2].PutValue("Israel");
range[1, 0].PutValue("UK");
range[1, 1].PutValue("AUS");
range[1, 2].PutValue("Canada");
range[2, 0].PutValue("France");
range[2, 1].PutValue("India");
range[2, 2].PutValue("Egypt");
range[3, 0].PutValue("China");
range[3, 1].PutValue("Philipine");
range[3, 2].PutValue("Brazil");
// Save the excel file.
workbook.Save(dataDir + "rangecells.out.xls");

Определение ячеек в именованном диапазоне

Вы можете вставить данные в отдельные ячейки диапазона, следуя шаблону:

  • C#: Range[row,column]
  • VB: Range(row,column)

Если у вас есть именованный диапазон, который охватывает A1:C4. Матрица делает 4 * 3 = 12 ячеек. Отдельные ячейки диапазона упорядочены последовательно: Диапазон[0,0], Диапазон[0,1], Диапазон[0,2], Диапазон[1,0], Диапазон[1,1], Диапазон[1,2], Диапазон[2,0], Диапазон[2,1], Диапазон[2,2], Диапазон[3,0], Диапазон[3,1], Диапазон[3,2].

Используйте следующие свойства для определения ячеек в диапазоне:

  • FirstRow возвращает индекс первой строки в именованном диапазоне.
  • FirstColumn возвращает индекс первого столбца в именованном диапазоне.
  • RowCount возвращает общее количество строк в именованном диапазоне.
  • ColumnCount возвращает общее количество столбцов в именованном диапазоне.

В следующем примере показано, как ввести некоторые значения в ячейки указанного диапазона.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// The path to the documents directory.
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
// Instantiate a new Workbook.
Workbook workbook = new Workbook(dataDir + "book1.xls");
// Getting the specified named range
Range range = workbook.Worksheets.GetRangeByName("TestRange");
// Identify range cells.
Console.WriteLine( "First Row : " + range.FirstRow);
Console.WriteLine( "First Column : " + range.FirstColumn);
Console.WriteLine( "Row Count : " + range.RowCount);
Console.WriteLine( "Column Count : " + range.ColumnCount);

Доступ к именованным диапазонам

Доступ к конкретному именованному диапазону

Вызовите метод GetRangeByName коллекции Worksheets, чтобы получить диапазон по указанному имени. Типичный метод GetRangeByName принимает имя именованного диапазона и возвращает указанный именованный диапазон как экземпляр класса Range. В следующем примере показано, как получить доступ к указанному диапазону по его имени.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// The path to the documents directory.
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
// Opening the Excel file through the file stream
Workbook workbook = new Workbook(dataDir + "book1.xls");
// Getting the specified named range
Range range = workbook.Worksheets.GetRangeByName("TestRange");
if (range != null)
Console.WriteLine("Named Range : " + range.RefersTo);

Доступ ко всем именованным диапазонам в электронной таблице

Вызовите метод GetNamedRanges коллекции Worksheet, чтобы получить все именованные диапазоны в электронной таблице. Метод GetNamedRanges возвращает массив всех именованных диапазонов в коллекции Worksheets.

В следующем примере показано, как получить доступ ко всем именованным диапазонам в книге.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// The path to the documents directory.
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
// Opening the Excel file through the file stream
Workbook workbook = new Workbook(dataDir + "book1.xls");
// Getting all named ranges
Range[] range = workbook.Worksheets.GetNamedRanges();
if(range != null)
Console.WriteLine("Total Number of Named Ranges: " + range.Length);

Копировать именованные диапазоны

Aspose.Cells предоставляет метод Range.Copy() для копирования диапазона ячеек с форматированием в другой диапазон.

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

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// The path to the documents directory.
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
// Create directory if it is not already present.
bool IsExists = System.IO.Directory.Exists(dataDir);
if (!IsExists)
System.IO.Directory.CreateDirectory(dataDir);
// Instantiate a new Workbook.
Workbook workbook = new Workbook();
// Get all the worksheets in the book.
WorksheetCollection worksheets = workbook.Worksheets;
// Get the first worksheet in the worksheets collection.
Worksheet worksheet = workbook.Worksheets[0];
// Create a range of cells.
Range range1 = worksheet.Cells.CreateRange("E12", "I12");
// Name the range.
range1.Name = "MyRange";
// Set the outline border to the range.
range1.SetOutlineBorder(BorderType.TopBorder, CellBorderType.Medium, Color.FromArgb(0, 0, 128));
range1.SetOutlineBorder(BorderType.BottomBorder, CellBorderType.Medium, Color.FromArgb(0, 0, 128));
range1.SetOutlineBorder(BorderType.LeftBorder, CellBorderType.Medium, Color.FromArgb(0, 0, 128));
range1.SetOutlineBorder(BorderType.RightBorder, CellBorderType.Medium, Color.FromArgb(0, 0, 128));
// Input some data with some formattings into
// A few cells in the range.
range1[0, 0].PutValue("Test");
range1[0, 4].PutValue("123");
// Create another range of cells.
Range range2 = worksheet.Cells.CreateRange("B3", "F3");
// Name the range.
range2.Name = "testrange";
// Copy the first range into second range.
range2.Copy(range1);
// Save the excel file.
workbook.Save(dataDir + "copyranges.out.xls");