Start methods for sheets
This commit is contained in:
parent
3582cdce16
commit
0d0cbead88
|
@ -3118,6 +3118,10 @@ class LODocCalc(LODocument):
|
|||
"""Index access"""
|
||||
return LOCalcSheet(self._sheets[index])
|
||||
|
||||
def __setitem__(self, key: str, value: Any):
|
||||
"""Insert new sheet"""
|
||||
self._sheets[key] = value
|
||||
|
||||
def __len__(self):
|
||||
return self._sheets.Count
|
||||
|
||||
|
@ -3153,12 +3157,31 @@ class LODocCalc(LODocument):
|
|||
"""Get active sheet"""
|
||||
return LOCalcSheet(self._cc.ActiveSheet)
|
||||
|
||||
@property
|
||||
def new_sheet(self):
|
||||
sheet = self._create_instance('com.sun.star.sheet.Spreadsheet')
|
||||
return sheet
|
||||
|
||||
def activate(self, sheet: Any):
|
||||
"""Activate sheet
|
||||
|
||||
:param sheet: Sheet to activate
|
||||
:type sheet: str, pyUno or LOCalcSheet
|
||||
"""
|
||||
obj = sheet
|
||||
if isinstance(sheet, LOCalcSheet):
|
||||
obj = sheet.obj
|
||||
elif isinstance(sheet, str):
|
||||
obj = self._sheets[sheet]
|
||||
self._cc.setActiveSheet(obj)
|
||||
return
|
||||
|
||||
def insert(self, name: Union[str, list, tuple]):
|
||||
"""Insert new sheet
|
||||
|
||||
:param name: Name new sheet, or iterable with names.
|
||||
:type name: str, list or tuple
|
||||
:return: New instance sheet.
|
||||
:return: New last instance sheet.
|
||||
:rtype: LOCalcSheet
|
||||
"""
|
||||
names = name
|
||||
|
@ -3168,6 +3191,94 @@ class LODocCalc(LODocument):
|
|||
self._sheets[n] = self._create_instance('com.sun.star.sheet.Spreadsheet')
|
||||
return LOCalcSheet(self._sheets[n])
|
||||
|
||||
def remove(self, name: str):
|
||||
"""Remove sheet by name
|
||||
|
||||
:param name: Name sheet will remove
|
||||
:type name: str
|
||||
"""
|
||||
if isinstance(name, LOCalcSheet):
|
||||
name = name.name
|
||||
self._sheets.removeByName(name)
|
||||
return
|
||||
|
||||
def move(self, name:str, pos: int=-1):
|
||||
"""Move sheet name to position
|
||||
|
||||
:param name: Name sheet to move
|
||||
:type name: str
|
||||
:param pos: New position, if pos=-1 move to end
|
||||
:type pos: int
|
||||
"""
|
||||
index = pos
|
||||
if pos < 0:
|
||||
index = len(self)
|
||||
if isinstance(name, LOCalcSheet):
|
||||
name = name.name
|
||||
self._sheets.moveByName(name, index)
|
||||
return
|
||||
|
||||
def _get_new_name_sheet(self, name):
|
||||
i = 1
|
||||
new_name = f'{name}_{i}'
|
||||
while new_name in self:
|
||||
i += 1
|
||||
new_name = f'{name}_{i}'
|
||||
return new_name
|
||||
|
||||
def copy_sheet(self, name: Any, new_name: str='', pos: int=-1):
|
||||
"""Copy sheet by name
|
||||
|
||||
"""
|
||||
if isinstance(name, LOCalcSheet):
|
||||
name = name.name
|
||||
index = pos
|
||||
if pos < 0:
|
||||
index = len(self)
|
||||
if not new_name:
|
||||
new_name = self._get_new_name_sheet(name)
|
||||
self._sheets.copyByName(name, new_name, index)
|
||||
return LOCalcSheet(self._sheets[new_name])
|
||||
|
||||
def copy_from(self, doc: Any, source: Any=None, target: Any=None, pos: int=-1):
|
||||
"""Copy sheet from document
|
||||
|
||||
"""
|
||||
index = pos
|
||||
if pos < 0:
|
||||
index = len(self)
|
||||
|
||||
names = source
|
||||
if not source:
|
||||
names = doc.names
|
||||
elif isinstance(source, str):
|
||||
names = (source,)
|
||||
elif isinstance(source, LOCalcSheet):
|
||||
names = (source.name,)
|
||||
|
||||
new_names = target
|
||||
if not target:
|
||||
new_names = names
|
||||
elif isinstance(target, str):
|
||||
new_names = (target,)
|
||||
|
||||
for i, name in enumerate(names):
|
||||
self._sheets.importSheet(doc.obj, name, index + i)
|
||||
self[index + i].name = new_names[i]
|
||||
|
||||
return LOCalcSheet(self._sheets[index])
|
||||
|
||||
def sort(self, reverse=False):
|
||||
"""Sort sheets by name
|
||||
|
||||
:param reverse: For order in reverse
|
||||
:type reverse: bool
|
||||
"""
|
||||
names = sorted(self.names, reverse=reverse)
|
||||
for i, n in enumerate(names):
|
||||
self.move(n, i)
|
||||
return
|
||||
|
||||
|
||||
class LOCalcSheet(object):
|
||||
|
||||
|
|
Loading…
Reference in New Issue