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

Введение

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

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

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

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

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

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

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

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

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

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

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

from aspose.cells import Workbook
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET
# The path to the documents directory.
dataDir = RunExamples.GetDataDir(".")
# Opening the Excel file through the file stream
workbook = Workbook(dataDir + "book1.xls")
# Accessing the first worksheet in the Excel file
worksheet = workbook.worksheets[0]
# Creating a named range
range = worksheet.cells.create_range("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 возвращает общее количество столбцов в именованном диапазоне.

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

from aspose.cells import Workbook
from os import os, path
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET
# The path to the documents directory.
dataDir = RunExamples.GetDataDir(".")
# Create directory if it is not already present.
IsExists = path.isdir(dataDir)
if notIsExists:
os.makedirs(dataDir)
# Instantiate a new Workbook.
workbook = Workbook()
# Get the first worksheet in the workbook.
worksheet1 = workbook.worksheets[0]
cells = worksheet1.cells
# Create a range of cells based on H1:J4.
range = cells.create_range("H1", "J4")
# Name the range.
range.name = "MyRange"
startRow = range.first_row
startCol = range.first_column
# Input some data into cells in the range.
cells.get(startRow, startCol).put_value("USA")
cells.get(startRow, startCol + 1).put_value("SA")
cells.get(startRow, startCol + 2).put_value("Israel")
cells.get(startRow + 1, startCol).put_value("UK")
cells.get(startRow + 1, startCol + 1).put_value("AUS")
cells.get(startRow + 1, startCol + 2).put_value("Canada")
cells.get(startRow + 2, startCol).put_value("France")
cells.get(startRow + 2, startCol + 1).put_value("India")
cells.get(startRow + 2, startCol + 2).put_value("Egypt")
cells.get(startRow + 3, startCol).put_value("China")
cells.get(startRow + 3, startCol + 1).put_value("Philipine")
cells.get(startRow + 3, startCol + 2).put_value("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 возвращает общее количество столбцов в именованном диапазоне.

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

from aspose.cells import Workbook
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET
# The path to the documents directory.
dataDir = RunExamples.GetDataDir(".")
# Instantiate a new Workbook.
workbook = Workbook(dataDir + "book1.xls")
# Getting the specified named range
range = workbook.worksheets.get_range_by_name("TestRange")
# Identify range cells.
print("First Row : " + str(range.first_row))
print("First Column : " + str(range.first_column))
print("Row Count : " + str(range.row_count))
print("Column Count : " + str(range.column_count))

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

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

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

from aspose.cells import Workbook
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET
# The path to the documents directory.
dataDir = RunExamples.GetDataDir(".")
# Opening the Excel file through the file stream
workbook = Workbook(dataDir + "book1.xls")
# Getting the specified named range
range = workbook.worksheets.get_range_by_name("TestRange")
if range != None:
print("Named Range : " + range.refers_to)

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

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

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

from aspose.cells import Workbook
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET
# The path to the documents directory.
dataDir = RunExamples.GetDataDir(".")
# Opening the Excel file through the file stream
workbook = Workbook(dataDir + "book1.xls")
# Getting all named ranges
range = workbook.worksheets.get_named_ranges()
if range != None:
print("Total Number of Named Ranges: " + str(len(range)))

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

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

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

from aspose.cells import BorderType, CellBorderType, Workbook
from aspose.pydrawing import Color
from os import os, path
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET
# The path to the documents directory.
dataDir = RunExamples.GetDataDir(".")
# Create directory if it is not already present.
IsExists = path.isdir(dataDir)
if notIsExists:
os.makedirs(dataDir)
# Instantiate a new Workbook.
workbook = Workbook()
# Get all the worksheets in the book.
worksheets = workbook.worksheets
# Get the first worksheet in the worksheets collection.
worksheet = workbook.worksheets[0]
cells = worksheet.cells
# Create a range of cells.
range1 = cells.create_range("E12", "I12")
# Name the range.
range1.name = "MyRange"
# Set the outline border to the range.
range1.set_outline_border(BorderType.TOP_BORDER, CellBorderType.MEDIUM, Color.from_argb(0, 0, 128))
range1.set_outline_border(BorderType.BOTTOM_BORDER, CellBorderType.MEDIUM, Color.from_argb(0, 0, 128))
range1.set_outline_border(BorderType.LEFT_BORDER, CellBorderType.MEDIUM, Color.from_argb(0, 0, 128))
range1.set_outline_border(BorderType.RIGHT_BORDER, CellBorderType.MEDIUM, Color.from_argb(0, 0, 128))
startRow = range1.first_row
startCol = range1.first_column
# Input some data with some formattings into
# A few cells in the range.
cells.get(startRow, startCol).put_value("Test")
cells.get(startRow, startCol + 4).put_value("123")
# Create another range of cells.
range2 = cells.create_range("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")