easymacro/doc/content/es/calc/_index.md

4.6 KiB

+++ title = "Calc" weight = 6 +++

Trabajar con Calc

active

doc = app.active
app.debug(doc.type)

Propiedades

headers

Mostrar u ocultar encabezados de filas y columnas.

doc = app.active
app.msgbox(doc.headers)
doc.headers = not doc.headers
app.msgbox(doc.headers)
doc.headers = not doc.headers

tabs

Mostrar u ocultar las pestañas de las hojas.

doc = app.active
app.msgbox(doc.tabs)
doc.tabs = not doc.tabs
app.msgbox(doc.tabs)
doc.tabs = not doc.tabs

selection

Devolver la selección activa.

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

{{% notice warning %}} Cuidado, la selección actual pueden ser muchas cosas diferentes. {{% /notice %}}

names

Devolver una tupla con los nombres de todas las hojas.

doc = app.active
nombres = doc.names
app.debug(nombres)

active

Devuelve la hoja activa.

doc = app.active
hoja = doc.active
app.debug(hoja)

Métodos

activate

Activar hoja, argumento como objeto.

doc = app.active
hoja = doc[-1]
doc.activate(hoja)

Activar hoja por nombre.

doc = app.active
doc.activate('Hoja3')

select

Seleccionar una celda o rango.

doc = app.active
cell = doc[0]['A1']
doc.select(cell)

{{% notice tip %}} NO es necesario seleccionar celdas o rangos para manipularlos. {{% /notice %}}

start_range_selection

Permitir al usuario seleccionar un rango. Es necesario pasarle una clase con el nombre que prefiera (Eventos es recomendable) con dos métodos para procesar la captura como en el siguiente ejemplo:

class Eventos():

    def __init__(self, doc):
        self.doc = doc

    def range_selection_done(self, range_selection):
        if range_selection:
            app.debug(range_selection)
        self.doc.remove_range_selection_listener()
        return

    def range_selection_aborted(self):
        self.doc.remove_range_selection_listener()
        return


def main():
    doc = app.active
    doc.start_range_selection(Eventos)
    return

insert

Inserta una nueva hoja.

doc = app.active
hoja = doc.insert('OtraHoja')

Insertar varias hojas. Devolverá la última insertada.

nombres = ('Enero', 'Febrero', 'Marzo')
hoja = doc.insert(nombres)
app.debug(hoja)

Creando una nueva instancia y asignandola.

    doc = app.active
    doc['NuevaHoja'] = doc.new_sheet()

{{% notice warning %}} Si la hoja existe, obtendrá un error, verifique siempre que no exista primero. {{% /notice %}}

move

Mover hojas.

Pasar la hoja como objeto, de forma predetermianda se mueve a la última posición.

doc = app.active
hoja = doc[0]
doc.move(hoja)

Pasar la hoja por nombre.

doc = app.active
doc.move('Hoja1')

Especificar la posición destino.

doc = app.active
hoja = doc[0]
doc.move(hoja, 2)

remove

Eliminar hoja.

doc = app.active
sheet = doc[0]

doc.remove(sheet)

Eliminar por nombre.

doc.remove('Hoja2')

copy

Copiar hoja dentro del mismo documento.

doc = app.active
hoja = doc[0]

doc.copy_sheet(hoja, 'Otra hoja')

Por nombre.

doc.copy_sheet('Hoja1', 'Hoja2')

Si no se establece el nuevo nombre, se generá de forma automática: nombre + índice.

doc.copy_sheet(hoja)

copy_from

Copiar hojas de otro documento. Copiar con el mismo nombre.

doc = app.active
documento_origen = app.docs['Contactos.ods']
nombre_origen = 'Nombres'

doc.copy_from(documento_origen, nombre_origen)

Copiar con un nuevo nombre.

doc.copy_from(documento_origen, nombre_origen, 'NuevoNombre')

Si solo se establece el documento origen, se copian todas las hojas.

doc.copy_from(documento_origen)

sort

Ordenar hojas en orden alfabetico.

doc = app.active
doc.sort()

Ordenar de forma inversa.

doc = app.active
doc.sort(True)

Eventos del documento.

Obtener una tupla con los eventos soportados por el documento.

doc = app.active
nombres = doc.events.names
app.debug(nombres)

Asignar una macro a un evento.

def doc_on_focus(event):
    app.debug('Documento activado...')
    return


def main():
    doc = app.active
    events = doc.events
    if 'OnFocus' in events:
        macro = {'library': 'test', 'name': 'doc_on_focus'}
        events['OnFocus'] = macro
    return

Eliminar la asignación del evento.

doc = app.active
doc.events['OnFocus'] = {}

O

doc = app.active
doc.events.remove('OnFocus')