Crear y copiar rangos con nombre

Introducción

Normalmente, las etiquetas de columna y fila se utilizan para referirse a celdas individuales. Es posible crear nombres descriptivos para representar celdas, rangos de celdas, fórmulas o valores constantes. La palabra nombre puede referirse a una cadena de caracteres que representa una celda, rango de celdas, fórmula o valor constante. Asignar un nombre a un rango significa que ese rango de celdas puede ser referido por su nombre. Utilice nombres fáciles de entender, como Productos, para referirse a rangos difíciles de comprender, como Ventas!C20:C30. Las etiquetas se pueden utilizar en fórmulas que hacen referencia a datos en la misma hoja de cálculo; si desea representar un rango en otra hoja de cálculo, puede usar un nombre. Los rangos con nombre son una de las características más potentes de Microsoft Excel, especialmente cuando se usan como el rango de origen para controles de lista, tablas dinámicas, gráficos, etc.

Trabajar con Rangos con Nombre Usando Microsoft Excel

Crear Rangos con Nombre

Los siguientes pasos describen cómo nombrar una celda o un rango de celdas usando MS Excel. Este método se aplica a Microsoft Office Excel 2003, Microsoft Excel 97, 2000 y 2002.

  1. Selecciona la celda o rango de celdas que deseas nombrar.
  2. Haga clic en la Caja de Nombre en el extremo izquierdo de la barra de fórmulas.
  3. Escribe el nombre para las celdas.
  4. Presiona ENTER.

Trabajar con Rango Nombrado Utilizando Aspose.Cells para la Biblioteca de Python Excel

Aquí, usamos la API Aspose.Cells para Python via .NET para realizar la tarea. Aspose.Cells para Python via .NET proporciona una clase, Workbook que representa un archivo de Microsoft Excel. La clase Workbook contiene una colección worksheets que permite acceder a cada hoja de cálculo en un archivo de Excel. Una hoja de cálculo está representada por la clase Worksheet. La clase Worksheet proporciona una colección cells.

Crear Rango con Nombre

Es posible crear un rango con nombre llamando al método sobrecargado create_range de la colección Cells. Una versión típica del método create_range toma los siguientes parámetros:

  • Nombre de la celda superior izquierda, el nombre de la celda superior izquierda en el rango.
  • Nombre de la celda inferior derecha, el nombre de la celda inferior derecha en el rango.

Cuando se llama al método create_range, devuelve el rango recién creado como una instancia de la clase Range. Utilice este objeto Range para configurar el rango con nombre. Por ejemplo, establezca el nombre del rango utilizando la propiedad name. El siguiente ejemplo muestra cómo crear un rango con nombre de celdas que se extiende sobre 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")

Ingresar Datos en las Celdas en el Rango Nombrado

Puede insertar datos en las celdas individuales de un rango siguiendo el patrón

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

Supongamos que tienes un rango de celdas que abarca de A1 a C4. La matriz hace 4 * 3 = 12 celdas. Las celdas de rango individuales están dispuestas secuencialmente: Rango[0,0], Rango[0,1], Rango[0,2], Rango[1,0], Rango[1,1], Rango[1,2], Rango[2,0], Rango[2,1], Rango[2,2], Rango[3,0], Rango[3,1], Rango[3,2].

Utiliza las siguientes propiedades para identificar las celdas en el rango:

  • FirstRow devuelve el índice de la primera fila en el rango con nombre.
  • FirstColumn devuelve el índice de la primera columna en el rango con nombre.
  • RowCount devuelve el número total de filas en el rango con nombre.
  • ColumnCount devuelve el número total de columnas en el rango con nombre.

El siguiente ejemplo muestra cómo ingresar algunos valores en las celdas de un rango especificado.

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")

Identificar Celdas en el Rango con Nombre

Puedes insertar datos en las celdas individuales de un rango siguiendo el patrón:

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

Si tienes un rango con nombre que abarca de A1 a C4. La matriz hace 4 * 3 = 12 celdas. Las celdas de rango individuales están dispuestas secuencialmente: Rango[0,0], Rango[0,1], Rango[0,2], Rango[1,0], Rango[1,1], Rango[1,2], Rango[2,0], Rango[2,1], Rango[2,2], Rango[3,0], Rango[3,1], Rango[3,2].

Utiliza las siguientes propiedades para identificar las celdas en el rango:

  • FirstRow devuelve el índice de la primera fila en el rango con nombre.
  • FirstColumn devuelve el índice de la primera columna en el rango con nombre.
  • RowCount devuelve el número total de filas en el rango con nombre.
  • ColumnCount devuelve el número total de columnas en el rango con nombre.

El siguiente ejemplo muestra cómo ingresar algunos valores en las celdas de un rango especificado.

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))

Acceder a rangos con nombres

Acceder a un Rango Nombrado Específico

Llame al método get_range_by_name de la colección Worksheet para obtener un rango por el nombre especificado. Un método get_range_by_name típico toma el nombre del rango con nombre y devuelve el rango con nombre especificado como una instancia de la clase Range. El siguiente ejemplo muestra cómo acceder a un rango especificado por su nombre.

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)

Acceder a todos los rangos con nombres en una hoja de cálculo

Llame al método get_named_ranges de la colección Worksheet para obtener todos los rangos con nombres en una hoja de cálculo. El método get_named_ranges devuelve un array de todos los rangos con nombres en la colección Worksheet

El siguiente ejemplo muestra cómo acceder a todos los rangos nombrados en un libro de trabajo.

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)))

Copiar rangos con nombres

Aspose.Cells para Python via .NET proporciona el método Range.copy() para copiar un rango de celdas con formato en otro rango.

El siguiente ejemplo muestra cómo copiar un rango de celdas fuente en otro rango con nombre.

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")