Macros/Guía de Python/Hojas de cálculo de Calc
TDF LibreOffice en español Document Liberation Project Blogs comunitarios Weblate Nextcloud Redmine Preguntas y respuestas Donar
Hojas de cálculo
En esta Guía de Python usamos las siguientes convenciones:
- hoja es una sola hoja de cálculo dentro de un documento de Calc
- libro de cálculo es un documento de Calc
ATENCIÓN
Copie o importe la función msgbox
que se describe en Funciones útiles
Nombres de hojas
- Obtenga los nombres de todas las hojas
doc = XSCRIPTCONTEXT.getDocument()
names = doc.Sheets.ElementNames
msgbox(names)
Cuente todas las hojas dentro de un libro de cálculo
doc = XSCRIPTCONTEXT.getDocument()
count = doc.Sheets.Count
msgbox(count)
Actúe sobre todas las hojas
doc = XSCRIPTCONTEXT.getDocument()
for sheet in doc.Sheets:
msgbox(sheet.Name)
Obtenga una determinada hoja
- Obtenga la hoja activa del documento activo
doc = XSCRIPTCONTEXT.getDocument()
sheet = doc.getCurrentController().getActiveSheet()
msgbox(sheet.Name)
- Obtenga la hoja activa mediante su índice en el documento activo
sheet = doc.Sheets[0]
msgbox(sheet.Name)
- Obtenga la hoja activa mediante su nombre en el documento activo
sheet = doc.Sheets['data']
msgbox(sheet.Name)
Activación de la hoja
Active el foco sobre una hoja
doc = XSCRIPTCONTEXT.getDocument()
sheet = doc.Sheets[0]
doc.getCurrentController().setActiveSheet(sheet)
Cambie el nombre
- Cambie el nombre de la hoja visible para el usuario
sheet = doc.Sheets[0]
msgbox(sheet.Name)
sheet.Name = 'OtherName'
msgbox(sheet.Name)
- Cambie el nombre de la hoja visible para el código
sheet = doc.Sheets[0]
msgbox(sheet.CodeName)
sheet.CodeName = 'Data'
msgbox(sheet.CodeName)
Establezca la visibilidad de la hoja
- Establezca el valor de la propiedad
IsVisible
comoFalse
para ocultar la hoja activa; yTrue
para mostrarla.
sheet = doc.Sheets[0]
msgbox(sheet.IsVisible)
sheet.IsVisible = False
msgbox(sheet.IsVisible)
sheet.IsVisible = True
Gestión de contraseñas
- Establezca una contraseña
sheet = doc.Sheets[0]
contra = 'letmein'
sheet.protect(contra)
- Elimine la contraseña establecida
sheet = doc.Sheets[0]
contra = 'letmein'
sheet.unprotect(contra)
Verifique si la hoja existe en el libro de cálculo
doc = XSCRIPTCONTEXT.getDocument()
exists = 'data' in doc.Sheets
msgbox(exists)
Inserte una hoja nueva en el libro de cálculo
insertNewByName(NOMBRE, POSICIÓN)
doc = XSCRIPTCONTEXT.getDocument()
doc.Sheets.insertNewByName('new', 0)
Inserte una hoja existente en un libro de cálculo
insertByName(HOJA, POSICIÓN)
doc = XSCRIPTCONTEXT.getDocument()
sheet = doc.createInstance('com.sun.star.sheet.Spreadsheet')
doc.Sheets.insertByName(sheet, 0)
Mueva la posición de una hoja dentro del libro de cálculo
moveByName(NOMBRE, NUEVA_POSICIÓN)
doc = XSCRIPTCONTEXT.getDocument()
doc.Sheets.moveByName('new', 3)
Elimine una hoja del libro de cálculo
removeByName(NOMBRE)
doc = XSCRIPTCONTEXT.getDocument()
doc.Sheets.removeByName('new')
Remplace una hoja con una nueva hoja
replaceByName(NOMBRE, HOJA)
PRECAUCIÓN
Use con prudencia. Esta función remplaza la hoja NOMBRE
con una hoja totalmente en blanco.
doc = XSCRIPTCONTEXT.getDocument()
sheet = doc.createInstance('com.sun.star.sheet.Spreadsheet')
doc.Sheets.replaceByName('data', sheet)
Copie una hoja
- Renombre una hoja
copyByName(NOMBRE_ORIGINAL, NUEVO_NOMBRE, POSICIÓN)
PRECAUCIÓN
Si el nuevo nombre ya existe en el libro de cálculo, la hoja se copiará con el nombre NOMBRE_ORIGINAL_2
y no habrá ningún mensaje de error.
- Copie la hoja con otro nombre dentro del mismo documento
doc = XSCRIPTCONTEXT.getDocument()
doc.Sheets.copyByName('data', 'NewData', 10)
- Copie (o importe) una hoja desde otro documento
importSheet(ORIGEN, NOMBRE_HOJA_ORIGEN, POSICIÓN)
source = XSCRIPTCONTEXT.getDocument()
desktop = app.create_instance('com.sun.star.frame.Desktop', True)
path = 'private:factory/scalc'
doc = desktop.loadComponentFromURL(path, '_default', 0, ())
doc.Sheets.importSheet(source, 'Services', 0)
Coloree la pestaña de una hoja
ATENCIÓN
Copie o importe la función get_color
que se describe en Funciones útiles
sheet = doc.Sheets['Sheet1']
sheet.TabColor = get_color(255, 0, 0)