Macros/Guía de Python/Hojas de cálculo de Calc

From The Document Foundation Wiki
Jump to: navigation, search
This page is a translated version of the page Macros/Python Guide/Calc/Calc sheets and the translation is 100% complete.

Other languages:
English • ‎español • ‎日本語



Regresar al índice

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


PRECAUCIÓ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)

Itere sobre todas las hojas abiertas

    doc = XSCRIPTCONTEXT.getDocument()
    for sheet in doc.Sheets:
        msgbox(sheet.Name)

Obtenga 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 que el usuario ve de la hoja
    sheet = doc.Sheets[0]
    msgbox(sheet.Name)
    sheet.Name = 'OtherName'
    msgbox(sheet.Name)
  • Cambie el nombre que el código ve de la hoja

PRECAUCIÓN Este cambio es válido y duradero solo durante la sesión actual. Es mejor no cambiar esta propiedad. Se recomienda usar los nombres predeterminados.

    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 como False para ocultar la hoja activa; y True para mostrarla.
    sheet = doc.Sheets[0]
    msgbox(sheet.IsVisible)
    sheet.IsVisible = False
    msgbox(sheet.IsVisible)
    sheet.IsVisible = True

Gestión de contraseña

  • Establezca una contraseña
    sheet = doc.Sheets[0]
    contra = 'letmein'
    sheet.protect(contra)
  • Elimine la contraseña conocida
    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(NAME, POSITION)

    doc = XSCRIPTCONTEXT.getDocument()
    doc.Sheets.insertNewByName('new', 0)


Inserte una hoja existente en un libro de cálculo

insertByName(SHEET, POSITION)

    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(NAME, NEW_POSITION)

    doc = XSCRIPTCONTEXT.getDocument()
    doc.Sheets.moveByName('new', 3)

Elimine una hoja del libro de cálculo

removeByName(NAME)

    doc = XSCRIPTCONTEXT.getDocument()
    doc.Sheets.removeByName('new')

Remplace una hoja con una nueva hoja

replaceByName(NAME, SHEET)

PRECAUCIÓN

Use con prudencia. Esta función remplaza la hoja NAME 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(SOURCE_NAME, NEW_NAME, POSITION)

PRECAUCIÓN

Si el nuevo nombre ya existe en el libro de cálculo, la hoja se copiará con el nombre SOURCE_NAME_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(SOURCE, SOURCE_NAME, POSITION)

    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

PRECAUCIÓN

Copie o importe la función get_color que se describe en Funciones útiles

1 sheet = doc.Sheets['Sheet1']
2 sheet.TabColor = get_color(255, 0, 0)