Work with ranges
This commit is contained in:
parent
f4b8d95444
commit
5e73b560d4
|
@ -3426,7 +3426,7 @@ class LODocCalc(LODocument):
|
|||
|
||||
@property
|
||||
def ranges(self):
|
||||
obj = self.create_instance('com.sun.star.sheet.SheetCellRanges')
|
||||
obj = self._create_instance('com.sun.star.sheet.SheetCellRanges')
|
||||
return LOCalcRanges(obj)
|
||||
|
||||
def get_ranges(self, address: str):
|
||||
|
@ -3564,6 +3564,41 @@ class LOCalcRanges(object):
|
|||
def __init__(self, obj):
|
||||
self._obj = obj
|
||||
|
||||
def __enter__(self):
|
||||
return self
|
||||
|
||||
def __exit__(self, exc_type, exc_value, traceback):
|
||||
pass
|
||||
|
||||
def __len__(self):
|
||||
return self._obj.Count
|
||||
|
||||
def __iter__(self):
|
||||
self._index = 0
|
||||
return self
|
||||
|
||||
def __next__(self):
|
||||
try:
|
||||
r = self.obj[self._index]
|
||||
rango = LOCalcRange(r)
|
||||
except IndexError:
|
||||
raise StopIteration
|
||||
|
||||
self._index += 1
|
||||
return rango
|
||||
|
||||
def __contains__(self, item):
|
||||
return self._obj.hasByName(item.name)
|
||||
|
||||
def __getitem__(self, index):
|
||||
r = self.obj[index]
|
||||
rango = LOCalcRange(r)
|
||||
return rango
|
||||
|
||||
def __str__(self):
|
||||
s = f'Ranges: {self.names}'
|
||||
return s
|
||||
|
||||
@property
|
||||
def obj(self):
|
||||
return self._obj
|
||||
|
@ -3572,14 +3607,37 @@ class LOCalcRanges(object):
|
|||
def names(self):
|
||||
return self.obj.ElementNames
|
||||
|
||||
def add(self, rangos):
|
||||
@property
|
||||
def data(self):
|
||||
rows = [r.data for r in self]
|
||||
return rows
|
||||
@data.setter
|
||||
def data(self, values):
|
||||
for i, data in enumerate(values):
|
||||
self[i].data = data
|
||||
|
||||
@property
|
||||
def style(self):
|
||||
return ''
|
||||
@style.setter
|
||||
def style(self, value):
|
||||
for r in self:
|
||||
r.style = value
|
||||
|
||||
def add(self, rangos: Any):
|
||||
if isinstance(rangos, LOCalcRange):
|
||||
rangos = (rangos,)
|
||||
for r in rangos:
|
||||
# ~ self._ranges[r.name] = r
|
||||
self.obj.addRangeAddress(r.range_address, False)
|
||||
return
|
||||
|
||||
def remove(self, rangos: Any):
|
||||
if isinstance(rangos, LOCalcRange):
|
||||
rangos = (rangos,)
|
||||
for r in rangos:
|
||||
self.obj.removeRangeAddress(r.range_address)
|
||||
return
|
||||
|
||||
|
||||
class LOCalcRange(object):
|
||||
CELL = 'ScCellObj'
|
||||
|
@ -3653,6 +3711,13 @@ class LOCalcRange(object):
|
|||
def sheet(self):
|
||||
return LOCalcSheet(self.obj.Spreadsheet)
|
||||
|
||||
@property
|
||||
def style(self):
|
||||
return self.obj.CellStyle
|
||||
@style.setter
|
||||
def style(self, value):
|
||||
self.obj.CellStyle = value
|
||||
|
||||
@property
|
||||
def cursor(self):
|
||||
cursor = self.obj.Spreadsheet.createCursorByRange(self.obj)
|
||||
|
|
Loading…
Reference in New Issue