easymacro/docs/es/docs/calc/cells.md

10 KiB

Trabajar con celdas y rangos


address

Referencia por dirección.

    hoja = app.active.active
    celda = hoja['A1']
    rango = hoja['C10:D15']

    app.debug(celda)
    app.debug(rango)

doc

Devuelve el documento padre.

    hoja = app.active.active
    rango = hoja['A1:C5']

    doc = rango.doc
    app.debug(doc)

in

Verificar si un rango esta dentro de otro.

    hoja = app.active.active

    celda = hoja['C5']
    rango = hoja['A1:E10']

    resultado = celda in rango
    app.debug(resultado)

    celda = hoja['C50']
    resultado = celda in rango
    app.debug(resultado)

iter

Iterar cada celda de un rango.

    hoja = app.active.active
    rango = hoja['B10:C15']

    for celda in rango:
        app.debug(celda)

position

Referencia por posición.

Para celdas: HOJA[fila,columna]

Para rangos: HOJA[fila_inicial:fila_final, columna_inicial:columna_final]

    hoja = app.active.active

    # ~ Cell A10
    celda = hoja[9,0]

    # ~ Range A1:C10
    rango = hoja[0:10,0:3]

!!! tip "Atención"

Recuerde que las filas y columnas empiezan en cero, por lo que `fila_final` y la `columna_final` deben de ser la fila y columna deseada más 1.

selection

Referencia por selección actual.

    seleccion = app.active.selection
    app.debug(seleccion)

!!! tip "Atención"

Recuerde que la selección actual pueden ser varias cosas diferentes.

Propiedades


address

Devuelve la dirección de la celda como una estructura: com.sun.star.table.CellAddress

    hoja = app.active.active

    celda = hoja['A1']
    if celda.is_cell:
        app.debug(celda.address)

back_color

Devuelve o aplica el color de fondo del rango.

    hoja = app.active.active

    rango = hoja['A1:E10']
    rango.back_color = 'red'

current_region

Devuelve la región actual.

    hoja = app.active.active

    celda = hoja['A1']
    rango = celda.current_region
    app.debug(rango)

data

Alias de data_array al obtener los datos. Al establecer los datos, si es un rango se comporta como data_array, pero si es una celda, se autoajusta al tamaño de los datos.

    hoja = app.active.active
    celda = hoja['A1']
    datos = (
        (1, 'Uno'),
        (2, 'Dos'),
        (3, 'Tres'),
    )

    celda.data = datos
    app.debug(celda.current_region.data)

!!! warning "Cuidado"

Siempre valide que haya suficientes celdas libres para los datos para evitar sobreescribirlos.

data_array

Devuelve o establece los datos de un rango. Es un alias de DataArray.

    rango = app.active.selection

    datos = rango.data_array
    app.debug(datos)
    rango.data_array = datos

!!! warning "Cuidado"

El tamaño de los datos, debe ser **exactamente** del tamaño del rango destino. De lo contrario obtendrá un error.

date

Devuelve o establece el contenido de la celda como fecha.

    hoja = app.active.active
    celda = hoja['A1']
    celda.date = app.dates.date(1974, 1, 15)
    app.debug(type(celda.date), celda.date)
20/08/2022 18:38:53 - DEBUG - <class 'datetime.date'>   1974-01-15

datetime

Devuelve o establece el contenido de la celda como fecha y tiempo.

    hoja = app.active.active
    celda = hoja['A1']
    celda.datetime = app.dates.datetime(1974, 1, 15, 10, 11, 12)
    app.debug(type(celda.datetime), celda.datetime)

dict

Devuelve o establece los datos como diccionarios. Automáticamente ajusta el rango al tamaño de los datos.

    hoja = app.active.active
    celda = hoja['A1']

    datos = (
        {'No': 1, 'Nombre': 'Ingrid'},
        {'No': 2, 'Nombre': 'Sophia'},
        {'No': 3, 'Nombre': 'Scarlette'},
    )

    celda.dict = datos
    app.debug(celda.current_region.dict)

!!! warning "Consejo"

Siempre valide que haya suficientes celdas libres para los datos para evitar sobreescribirlos, a menos que eso sea lo que realmente quiera.

error

Si la celda tiene una formula con error, devuelve el número de error.

    hoja = app.active.active
    celda = hoja['A1']
    celda.value = '=RAND()/0'
    app.debug(celda.error)

float

Devuelve o establece el contenido de la celda como valor.

    hoja = app.active.active
    celda = hoja['A1']
    celda.float = 12345
    app.debug(celda.type, celda.float)

formula

Devuelve o establece la formula de la celda.

    hoja = app.active.active
    celda = hoja['A1']
    celda.formula = '=RAND()'
    app.debug(celda.type, celda.formula)

formula_array

Devuelve o establece los datos de un rango. Es un alias de FormulaArray.

    rango = app.active.selection

    datos = rango.data_array
    app.debug(datos)
    datos = rango.formula_array
    app.debug(datos)
    rango.formula_array = datos

!!! tip "Consejo"

**data_array** devolverá los resultados de las celdas con formulas. **formula_array** devolverá las formulas en dichas celdas.

is_cell

Verdadero (True) si el objeto es de una celda.

    hoja = app.active.active

    celda = hoja['A1']
    app.debug(celda.is_cell)

    rango = hoja['A1:C5']
    app.debug(rango.is_cell)

is_range

Verdadero (True) si el objeto es de un rango.

    hoja = app.active.active

    celda = hoja['A1']
    app.debug(celda.is_range)

    rango = hoja['A1:C5']
    app.debug(rango.is_range)

len

Devolver el tamaño del rango en filas y columnas.

    hoja = app.active.active

    rango = hoja['A1:E100']
    filas = len(rango)
    columnas = rango.len_columns
    app.debug(filas, columnas)

name

Devuelve la dirección de la celda o rango como texto.

    hoja = app.active.active

    celda = hoja['A1']
    app.debug(celda.name)

    rango = hoja['A1:C5']
    app.debug(rango.name)

next_free

Devuelve la siguiente celda libre después de la región actual.

    hoja = app.active.active
    celda = hoja['A1']

    celda_libre = celda.next_free
    app.debug(celda_libre)

range_address

Devuelve la dirección del rango como una estructura: com.sun.star.table.CellRangeAddress

    hoja = app.active.active

    rango = hoja['A1:C5']
    if rango.is_range:
        app.debug(rango.range_address)

range_data

Devuelve la región actual del rango excepto la primer fila.

    hoja = app.active.active

    celda = hoja['A1']
    rango = celda.range_data
    app.debug(rango)

sheet

Devuelve la hoja padre.

    hoja = app.active.active
    rango = hoja['A1:C5']

    hoja = rango.sheet
    app.debug(hoja)

string

Devuelve o establece el contenido de la celda como texto.

    hoja = app.active.active

    celda = hoja['A1']
    celda.string = 'Maldito Mundo'
    app.debug(celda.type, celda.string)

    celda = hoja['A2']
    celda.string = 12345
    app.debug(celda.type, celda.string)

style

Devuelve o aplica el estilo de celda.

    hoja = app.active.active
    rango = hoja['A1:C5']
    rango.style = 'Good'

time

Devuelve o establece el contenido de la celda como tiempo.

    hoja = app.active.active
    celda = hoja['A1']
    celda.time = app.dates.time(10, 11, 12)
    app.debug(type(celda.time), celda.time)

type

Devuelve el tipo de contenido de la celda: texto, número o formula.

    hoja = app.active.active
    celda = hoja['A1']
    app.debug(celda.type)

!!! tip "Consejo"

Asegurese de que la selección siempre sea una sola celda.

value

Devuelve o establece el valor de la celda, estableciendo el tipo de dato automáticamente.

    hoja = app.active.active

    celda = hoja['A1']
    celda.value = 'Soy Texto'
    app.debug(celda.type, celda.value)

    celda = hoja['A2']
    celda.value = 12345
    app.debug(celda.type, celda.value)

    celda = hoja['A3']
    celda.value = '=RAND()'
    app.debug(celda.type, celda.value)

    celda = hoja['A4']
    celda.value = app.dates.date(1974, 1, 15)
    app.debug(celda.type, celda.value)
23/04/2023 19:49:05 - DEBUG - <Enum instance com.sun.star.table.CellContentType ('TEXT')>   Soy Texto
23/04/2023 19:49:05 - DEBUG - <Enum instance com.sun.star.table.CellContentType ('VALUE')>  12345.0
23/04/2023 19:49:05 - DEBUG - <Enum instance com.sun.star.table.CellContentType ('FORMULA')>    =RAND()
23/04/2023 19:49:05 - DEBUG - <Enum instance com.sun.star.table.CellContentType ('VALUE')>  27044.0

Métodos


clear

Limpia el rango. Por default solo borra datos. Mire API CellFlags para más información.

    rango.clear()

Para borrar todo.

    rango.clear(app.ALL)

len

Devuelve el tamaño en filas y columnas del rango.

    hoja = app.active.active

    rango = hoja['A1:C100']
    filas, columnas = rango.len()
    app.debug(filas, columnas)

offset

Devuelve la celda inmediata a la derecha en la misma fila.

    cell = app.active.active['A1']
    app.debug(cell)
    cell = cell.offset()
    app.debug(cell)
23/04/2023 21:22:15 - DEBUG - Cell: $Sheet1.$A$1
23/04/2023 21:22:15 - DEBUG - Cell: $Sheet1.$B$1

Se puede establecer la distancia a la celda a devolver en filas y columnas.

    cell = app.active.active['A1']
    app.debug(cell)
    cell = cell.offset(4,2)
    app.debug(cell)
23/04/2023 21:24:59 - DEBUG - Cell: $Sheet1.$A$1
23/04/2023 21:24:59 - DEBUG - Cell: $Sheet1.$C$5

to_size

Espande el tamaño del rango actual tantas filas y columnas se pasen como argumentos.

    cell = app.active.active['A1']
    app.debug(cell)
    cell = cell.to_size(10,5)
    app.debug(cell)
23/04/2023 21:30:56 - DEBUG - Cell: $Sheet1.$A$1
23/04/2023 21:30:56 - DEBUG - Range: $Sheet1.$A$1:$E$10