Calc

Remember, always import library.

import easymacro as app

Current doc

doc = app.active
app.msgbox(doc.type)

Selection

  • If selection is range get LOCalcRange, if selection is shape get LOShape, other selection get original pyuno object.

doc = app.active
selection = doc.selection
app.msgbox(type(selection))

Headers

  • Hide or show columns and rows headers.

doc = app.active
app.msgbox(doc.headers)
doc.headers = not doc.headers
app.msgbox(doc.headers)
doc.headers = not doc.headers

Tabs

  • Hide or show tab sheets.

doc = app.active
app.msgbox(doc.tabs)
doc.tabs = not doc.tabs
app.msgbox(doc.tabs)
doc.tabs = not doc.tabs

Sheets

Active sheet

sheet = app.active_sheet
app.msgbox(sheet.name)

# or
doc = app.active
sheet = doc.active

Get by index

doc = app.active
sheet = doc[0]
app.msgbox(sheet.name)

Get by name

doc = app.active
sheet = doc['Sheet1']
app.msgbox(sheet.name)

Contains

doc = app.active
app.msgbox('Sheet1' in doc)

Get tuple with all names

doc = app.active
app.msgbox(doc.names)

Count

doc = app.active
app.msgbox(len(doc))

New

  • Always validate if new name not exists.

doc = app.active

sheet = doc.new_sheet()
# CAUTION: If 'NewSheet' exists, reset it to clean sheet.
doc['NewSheet'] = sheet

# ~ or

sheet = doc.insert('NewSheet2')
  • Insert multiple, get last insert.

names = ('One', 'Two', 'Three')
sheet = doc.insert(names)

Move

  • Move by object to last position.

sheet = doc[0]
doc.move(sheet)
  • Move by name to last position.

doc.move('Sheet1')
  • Move to position.

    sheet = doc[0] doc.move(sheet, 2)

Remove

  • Remove by object

sheet = doc[0]
doc.remove(sheet)
  • Remove by name

doc.remove('One')

Copy

  • Copy inside the same spreadsheet.

  • By object

sheet = doc[0]
doc.copy(sheet, 'OtherSheet')
  • By name

doc.copy('Sheet1', 'Sheet2')

Copy from

  • Copy sheet from one spreadsheet to other.

doc = app.active
doc_source = app.docs['Contacts.ods']
name_source = 'Names'
name_target = 'Names'
position = 0
doc.copy_from(doc_source, name_source, name_target, position)

Sort

  • Sort sheets by names.

doc = app.active
doc.sort()

Name

  • Name visible by the user.

sheet = app.active_sheet
app.msgbox(sheet.name)
sheet.name = 'NewName'
app.msgbox(sheet.name)

Code name

  • Name only accessible by code.

sheet = app.active_sheet
app.msgbox(sheet.code_name)
sheet.code_name = 'my_name'
app.msgbox(sheet.code_name)

Visible

  • Apply only with spreadsheet with two or more sheets.

sheet = app.active_sheet
app.msgbox(sheet.visible)
sheet.visible = not sheet.visible
app.msgbox(sheet.visible)
sheet.visible = not sheet.visible