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

323 lines
4.6 KiB
Markdown

+++
title = "Calc"
weight = 6
+++
#### Trabajar con Calc
### active
```python
doc = app.active
app.debug(doc.type)
```
#### Propiedades
### headers
Mostrar u ocultar encabezados de filas y columnas.
```python
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.
```python
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.
```python
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.
```python
doc = app.active
nombres = doc.names
app.debug(nombres)
```
### active
Devuelve la hoja activa.
```python
doc = app.active
hoja = doc.active
app.debug(hoja)
```
#### Métodos
### activate
Activar hoja, argumento como objeto.
```python
doc = app.active
hoja = doc[-1]
doc.activate(hoja)
```
Activar hoja por nombre.
```python
doc = app.active
doc.activate('Hoja3')
```
### select
Seleccionar una celda o rango.
```python
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:
```python
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.
```python
doc = app.active
hoja = doc.insert('OtraHoja')
```
Insertar varias hojas. Devolverá la última insertada.
```python
nombres = ('Enero', 'Febrero', 'Marzo')
hoja = doc.insert(nombres)
app.debug(hoja)
```
Creando una nueva instancia y asignandola.
```python
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.
```python
doc = app.active
hoja = doc[0]
doc.move(hoja)
```
Pasar la hoja por nombre.
```python
doc = app.active
doc.move('Hoja1')
```
Especificar la posición destino.
```python
doc = app.active
hoja = doc[0]
doc.move(hoja, 2)
```
### remove
Eliminar hoja.
```python
doc = app.active
sheet = doc[0]
doc.remove(sheet)
```
Eliminar por nombre.
```python
doc.remove('Hoja2')
```
### copy
Copiar hoja dentro del mismo documento.
```python
doc = app.active
hoja = doc[0]
doc.copy_sheet(hoja, 'Otra hoja')
```
Por nombre.
```python
doc.copy_sheet('Hoja1', 'Hoja2')
```
Si no se establece el nuevo nombre, se generá de forma automática: `nombre + índice`.
```python
doc.copy_sheet(hoja)
```
### copy_from
Copiar hojas de otro documento. Copiar con el mismo nombre.
```python
doc = app.active
documento_origen = app.docs['Contactos.ods']
nombre_origen = 'Nombres'
doc.copy_from(documento_origen, nombre_origen)
```
Copiar con un nuevo nombre.
```python
doc.copy_from(documento_origen, nombre_origen, 'NuevoNombre')
```
Si solo se establece el documento origen, se copian todas las hojas.
```python
doc.copy_from(documento_origen)
```
### sort
Ordenar hojas en orden alfabetico.
```python
doc = app.active
doc.sort()
```
Ordenar de forma inversa.
```python
doc = app.active
doc.sort(True)
```
### Eventos del documento.
Obtener una tupla con los eventos soportados por el documento.
```python
doc = app.active
nombres = doc.events.names
app.debug(nombres)
```
#### Asignar una macro a un evento.
```python
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.
```python
doc = app.active
doc.events['OnFocus'] = {}
```
O
```python
doc = app.active
doc.events.remove('OnFocus')
```