Start methods for sheets
This commit is contained in:
parent
3582cdce16
commit
0d0cbead88
|
@ -3118,6 +3118,10 @@ class LODocCalc(LODocument):
|
||||||
"""Index access"""
|
"""Index access"""
|
||||||
return LOCalcSheet(self._sheets[index])
|
return LOCalcSheet(self._sheets[index])
|
||||||
|
|
||||||
|
def __setitem__(self, key: str, value: Any):
|
||||||
|
"""Insert new sheet"""
|
||||||
|
self._sheets[key] = value
|
||||||
|
|
||||||
def __len__(self):
|
def __len__(self):
|
||||||
return self._sheets.Count
|
return self._sheets.Count
|
||||||
|
|
||||||
|
@ -3153,12 +3157,31 @@ class LODocCalc(LODocument):
|
||||||
"""Get active sheet"""
|
"""Get active sheet"""
|
||||||
return LOCalcSheet(self._cc.ActiveSheet)
|
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]):
|
def insert(self, name: Union[str, list, tuple]):
|
||||||
"""Insert new sheet
|
"""Insert new sheet
|
||||||
|
|
||||||
:param name: Name new sheet, or iterable with names.
|
:param name: Name new sheet, or iterable with names.
|
||||||
:type name: str, list or tuple
|
:type name: str, list or tuple
|
||||||
:return: New instance sheet.
|
:return: New last instance sheet.
|
||||||
:rtype: LOCalcSheet
|
:rtype: LOCalcSheet
|
||||||
"""
|
"""
|
||||||
names = name
|
names = name
|
||||||
|
@ -3168,6 +3191,94 @@ class LODocCalc(LODocument):
|
||||||
self._sheets[n] = self._create_instance('com.sun.star.sheet.Spreadsheet')
|
self._sheets[n] = self._create_instance('com.sun.star.sheet.Spreadsheet')
|
||||||
return LOCalcSheet(self._sheets[n])
|
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):
|
class LOCalcSheet(object):
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue