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

394 lines
6.4 KiB
Markdown

---
title: Documento
---
Devolver el documento activo.
### **active**
```py
doc = app.active
```
<br>
## Propiedades
---
### **active**
Devuelve la hoja activa.
```py
doc = app.active
hoja = doc.active
app.debug(hoja)
```
<br>
### **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
```
<br>
### **names**
Devolver una tupla con los nombres de todas las hojas.
```py
doc = app.active
nombres = doc.names
app.debug(nombres)
```
<br>
### **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)
```
<br>
### **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
```
<br>
## 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')
```
<br>
### **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)
```
<br>
### **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.
<br>
### **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.
<br>
### **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)
```
<br>
### **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')
```
<br>
### **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
```
<br>
### **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.
<br>
### **sort**
Ordenar hojas en orden alfabetico.
```py
doc = app.active
doc.sort()
```
Ordenar de forma inversa.
```py
doc = app.active
doc.sort(True)
```
<br>
## 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
```
<br>
### 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
```
<br>
### Eliminar la asignación del evento.
```py
doc = app.active
doc.events['OnFocus'] = {}
```
O
```python
doc = app.active
doc.events.remove('OnFocus')
```
<br>