easymacro/docs/es/docs/calc/sheets.md

354 lines
4.8 KiB
Markdown

---
title: Hojas
---
## Trabajar con hojas
---
### Referencia por **índice**
```py
doc = app.active
hoja = doc[0]
app.debug(hoja.name)
```
### Referencia por **nombre**
```py
doc = app.active
hoja = doc['datos']
app.debug(hoja.name)
```
### **in**
Verificar por nombre si una hoja existe.
```py
doc = app.active
existe = 'Hoja2' in doc
app.debug(existe)
```
### **len**
Contar la cantidad de hojas en el documento.
```py
doc = app.active
contar = len(doc)
app.debug(contar)
```
### **iter**
Recorrer todas las hojas.
```py
doc = app.active
for hoja in doc:
app.debug(hoja)
```
<br>
## Propiedades
---
### **code_name**
Nombre editable y accesible solo por código.
```py
hoja = app.active.active
app.msgbox(hoja.code_name)
hoja.code_name = 'datos'
app.msgbox(hoja.code_name)
```
<br>
### **color**
Color de la pestaña.
```py
hoja = app.active.active
app.msgbox(hoja.color)
hoja.color = 'red'
app.msgbox(hoja.color)
# RGB
hoja.color = (125, 200, 10)
app.msgbox(hoja.color)
```
<br>
### **doc**
Devuelve al documento Calc donde esta la hoja.
```py
hoja = app.active.active
doc = hoja.doc
app.debug(doc.title)
```
<br>
### **is_protected**
Devuelve verdadero (True) si la hoja esta protegida
```py
hoja = app.active.active
esta_protegida = hoja.is_protected
app.debug(esta_protegida)
```
<br>
### **name**
Nombre visible y editable por el usuario.
```py
hoja = app.active.active
app.debug(hoja.name)
hoja.name = 'Nuevo Nombre'
app.debug(hoja.name)
```
<br>
### **password**
Establecer una contraseña.
!!! tip "Consejo"
Si la hoja ya esta protegida, aún sin contraseña, este método no tendrá ningún efecto.
```py
hoja = app.active.active
hoja.password = 'siscaloburropanzon'
app.debug(hoja.is_protected)
```
<br>
### **used_area**
Referencia al área de usuario actual.
```py
hoja = app.active.active
rango = hoja.used_area
app.debug(rango)
```
<br>
### **visible**
Muestra u oculta la hoja
```py
hoja = app.active.active
app.msgbox(hoja.visible)
hoja.visible = not hoja.visible
app.msgbox(hoja.visible)
hoja.visible = not hoja.visible
```
!!! tip "Cuidado"
Solo funcionará con dos o más hojas, por que debe haber al menos una visible. Siempre puedes trabajar con todo el documento oculto.
<br>
## Métodos
---
### **activate**
Pasar el foco a la hoja.
!!! tip inline end "Recuerde"
No es necesario activar una hoja para manipularse.
```py
doc = app.active
hoja = doc[-1]
hoja.activate()
```
<br>
### **copy**
!!! tip "Consejo"
Siempre valide que no exista el nuevo nombre.
```py
doc = app.active
hoja = doc[0]
nuevo_nombre = f'{hoja.name}_2'
if not nuevo_nombre in doc:
hoja.copy(nuevo_nombre)
```
Si no se establece el nuevo nombre, se generá de forma automática: `nombre + índice`.
```py
hoja.copy()
```
### **copy_to**
Copiar la hoja a otro documento. Se usa el mismo nombre.
```py
doc = app.active
hoja = doc.active
documento_nuevo = app.docs.new()
hoja.copy_to(documento_nuevo)
```
Usar un nuevo nombre.
```python
hoja.copy_to(documento_nuevo, 'Nuevo nombre')
```
<br>
### **move**
Mover a la última posición.
```py
doc = app.active
hoja = doc[0]
hoja.move()
```
Mover a una posición especifica.
```py
doc = app.active
hoja = doc[0]
hoja.move(3)
```
<br>
### **remove**
Remover hoja.
```py
sheet = app.active.active
sheet.remove()
```
!!! warning "Cuidado"
Siempre debe existir al menos una hoja.
<br>
### **unprotect**
Quitar contraseña.
```py
hoja = app.active.active
hoja.password = 'siscaloburropanzon'
app.msgbox(hoja.is_protected)
hoja.unprotect('siscaloburropanzon')
app.msgbox(hoja.is_protected)
```
<br>
## Eventos
---
### **names**
Obtener una tupla con los eventos soportados por la hoja.
```py
hoja = app.active.active
for nombre in hoja.events.names:
app.debug(nombre)
```
```sh
23/04/2023 16:59:26 - DEBUG - OnFocus
23/04/2023 16:59:26 - DEBUG - OnUnfocus
23/04/2023 16:59:26 - DEBUG - OnSelect
23/04/2023 16:59:26 - DEBUG - OnDoubleClick
23/04/2023 16:59:26 - DEBUG - OnRightClick
23/04/2023 16:59:26 - DEBUG - OnChange
23/04/2023 16:59:26 - DEBUG - OnCalculate
```
<br>
### Asignar una macro a un evento.
```py
def on_select(source):
app.debug(source.AbsoluteName)
return
def main():
doc = app.active
hoja = doc.active
if 'OnSelect' in hoja.events:
macro = {'library': 'test', 'name': 'on_select'}
hoja.events['OnSelect'] = macro
return
```
<br>
### Eliminar la asignación del evento.
```py
hoja.events['OnSelect'] = {}
```
O
```py
hoja.events.remove('OnFocus')
```
<br>