4.6 KiB
+++ title = "Calc" weight = 6 +++
Trabajar con Calc
active
doc = app.active
app.debug(doc.type)
Propiedades
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
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
selection
Devolver la selección activa.
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.
doc = app.active
nombres = doc.names
app.debug(nombres)
active
Devuelve la hoja activa.
doc = app.active
hoja = doc.active
app.debug(hoja)
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')
select
Seleccionar una celda o rango.
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:
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.
doc = app.active
hoja = doc.insert('OtraHoja')
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()
{{% 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.
doc = app.active
hoja = doc[0]
doc.move(hoja)
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
Eliminar hoja.
doc = app.active
sheet = doc[0]
doc.remove(sheet)
Eliminar por nombre.
doc.remove('Hoja2')
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', 'Hoja2')
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)
sort
Ordenar hojas en orden alfabetico.
doc = app.active
doc.sort()
Ordenar de forma inversa.
doc = app.active
doc.sort(True)
Eventos del documento.
Obtener una tupla con los eventos soportados por el documento.
doc = app.active
nombres = doc.events.names
app.debug(nombres)
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')