--- title: Documento --- Devolver el documento activo. ### **active** ```py doc = app.active ```
## Propiedades --- ### **active** Devuelve la hoja activa. ```py doc = app.active hoja = doc.active app.debug(hoja) ```
### **headers** Mostrar u ocultar encabezados de filas y columnas. ```py 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. ```py 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. ```py doc = app.active seleccion = doc.selection app.debug(seleccion) ```
### **tabs** Mostrar u ocultar las pestañas de las hojas. ```py 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. ```py doc = app.active hoja = doc[-1] doc.activate(hoja) ``` Activar hoja por nombre. ```py doc = app.active doc.activate('Hoja3') ```
### **copy** Copiar hoja dentro del mismo documento. ```py doc = app.active hoja = doc[0] doc.copy_sheet(hoja, 'Otra hoja') ``` Por nombre. ```py doc.copy_sheet('Hoja1', 'Nueva Hoja') ``` Si no se establece el nuevo nombre, se generá de forma automática: `nombre + índice`. ```py doc.copy_sheet(hoja) ```
### **copy_from** Copiar hojas de otro documento. Copiar con el mismo nombre. ```py doc = app.active documento_origen = app.docs['Contactos.ods'] nombre_origen = 'Nombres' doc.copy_from(documento_origen, nombre_origen) ``` Copiar con un nuevo nombre. ```py doc.copy_from(documento_origen, nombre_origen, 'NuevoNombre') ``` Si solo se establece el documento origen, se copian todas las hojas. ```py 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. ```py doc = app.active hoja = doc.insert('HojaInsertada') ``` Insertar varias hojas. Devolverá la última insertada. ```py nombres = ('Enero', 'Febrero', 'Marzo') hoja = doc.insert(nombres) app.debug(hoja) ``` Creando una nueva instancia y asignandola. ```py 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. ```py doc = app.active hoja = doc[0] doc.move(hoja) ``` !!! info "Información" Al mover una hoja, cambian sus índices. Pasar la hoja por nombre. ```py doc = app.active doc.move('Hoja1') ``` Especificar la posición destino. ```py 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. ```py doc = app.active sheet = doc[0] doc.remove(sheet) ``` Eliminar por nombre. ```py 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: ```py 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. ```py 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. ```py doc = app.active doc.sort() ``` Ordenar de forma inversa. ```py doc = app.active doc.sort(True) ```
## Eventos --- Obtener una tupla con los eventos soportados por el documento. ```py doc = app.active nombres = doc.events.names for nombre in nombres: app.debug(nombre) ``` ```sh 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. ```py 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. ```py doc = app.active doc.events['OnFocus'] = {} ``` O ```python doc = app.active doc.events.remove('OnFocus') ```