easymacro/docs/es/docs/calc/index.md

6.4 KiB

title
Documento

Devolver el documento activo.

active

    doc = app.active

Propiedades


active

Devuelve la hoja activa.

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

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

names

Devolver una tupla con los nombres de todas las hojas.

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

selection

Devolver la selección activa.

!!! warning inline end "Cuidado"

La selección actual pueden ser muchas cosas diferentes.
    doc = app.active
    seleccion = doc.selection
    app.debug(seleccion)

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

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

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', 'Nueva Hoja')

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)

!!! info "Información"

Si algún nombre de hoja en el origen existe en el destino, se copiará con un nuevo índice concatenado el nombre origen.

insert

Inserta una nueva hoja, se devuelve la hoja insertada.

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

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

!!! warning "Cuidado"

Si la hoja existe, obtendrá un error, verifique siempre que no exista primero.

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)

!!! info "Información"

Al mover una hoja, cambian sus índices.

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

!!! warning "Cuidado"

Siempre debe haber al menos una hoja en un documento.

Eliminar hoja por índice.

    doc = app.active
    sheet = doc[0]

    doc.remove(sheet)

Eliminar por nombre.

    doc.remove('Hoja2')

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

select

Seleccionar una celda o rango.

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

!!! tip "Consejo"

**No es necesario** seleccionar celdas o rangos para manipularlos.

sort

Ordenar hojas en orden alfabetico.

    doc = app.active
    doc.sort()

Ordenar de forma inversa.

    doc = app.active
    doc.sort(True)

Eventos


Obtener una tupla con los eventos soportados por el documento.

    doc = app.active
    nombres = doc.events.names
    for nombre in nombres:
        app.debug(nombre)
23/04/2023 13:54:10 - DEBUG - OnStartApp
23/04/2023 13:54:10 - DEBUG - OnCloseApp
23/04/2023 13:54:10 - DEBUG - OnCreate
23/04/2023 13:54:10 - DEBUG - OnNew
23/04/2023 13:54:10 - DEBUG - OnLoadFinished
23/04/2023 13:54:10 - DEBUG - OnLoad
23/04/2023 13:54:10 - DEBUG - OnPrepareUnload
23/04/2023 13:54:10 - DEBUG - OnUnload
23/04/2023 13:54:10 - DEBUG - OnSave
23/04/2023 13:54:10 - DEBUG - OnSaveDone
23/04/2023 13:54:10 - DEBUG - OnSaveFailed
23/04/2023 13:54:10 - DEBUG - OnSaveAs
23/04/2023 13:54:10 - DEBUG - OnSaveAsDone
23/04/2023 13:54:10 - DEBUG - OnSaveAsFailed
23/04/2023 13:54:10 - DEBUG - OnCopyTo
23/04/2023 13:54:10 - DEBUG - OnCopyToDone
23/04/2023 13:54:10 - DEBUG - OnCopyToFailed
23/04/2023 13:54:10 - DEBUG - OnFocus
23/04/2023 13:54:10 - DEBUG - OnUnfocus
23/04/2023 13:54:10 - DEBUG - OnPrint
23/04/2023 13:54:10 - DEBUG - OnViewCreated
23/04/2023 13:54:10 - DEBUG - OnPrepareViewClosing
23/04/2023 13:54:10 - DEBUG - OnViewClosed
23/04/2023 13:54:10 - DEBUG - OnModifyChanged
23/04/2023 13:54:10 - DEBUG - OnTitleChanged
23/04/2023 13:54:10 - DEBUG - OnVisAreaChanged
23/04/2023 13:54:10 - DEBUG - OnModeChanged
23/04/2023 13:54:10 - DEBUG - OnStorageChanged

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