Add support for calc ranges
This commit is contained in:
parent
45e3f97e6c
commit
6efa879c85
Binary file not shown.
Binary file not shown.
|
@ -435,3 +435,26 @@ Ranges
|
|||
|
||||
rango = sheet[1:5,1:4]
|
||||
app.msgbox(rango.name)
|
||||
|
||||
* Group ranges
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
sheet = doc.active
|
||||
last = doc[-1]
|
||||
with doc.ranges as r:
|
||||
# Add one range
|
||||
r.add(sheet['A1:B2'])
|
||||
r2 = sheet['C4:D5']
|
||||
r3 = last['E7:D8']
|
||||
r4 = last['E10:F12']
|
||||
# Add multiple ranges
|
||||
r.add((r2, r3, r4))
|
||||
app.debug(r.names)
|
||||
|
||||
* Get the same range in all sheets
|
||||
|
||||
ranges = doc.get_ranges('A1:B1')
|
||||
app.debug(ranges.names)
|
||||
|
||||
|
|
|
@ -425,6 +425,31 @@
|
|||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">rango</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Group ranges</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">sheet</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="n">active</span>
|
||||
<span class="n">last</span> <span class="o">=</span> <span class="n">doc</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="k">with</span> <span class="n">doc</span><span class="o">.</span><span class="n">ranges</span> <span class="k">as</span> <span class="n">r</span><span class="p">:</span>
|
||||
<span class="c1"># Add one range</span>
|
||||
<span class="n">r</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">sheet</span><span class="p">[</span><span class="s1">'A1:B2'</span><span class="p">])</span>
|
||||
<span class="n">r2</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'C4:D5'</span><span class="p">]</span>
|
||||
<span class="n">r3</span> <span class="o">=</span> <span class="n">last</span><span class="p">[</span><span class="s1">'E7:D8'</span><span class="p">]</span>
|
||||
<span class="n">r4</span> <span class="o">=</span> <span class="n">last</span><span class="p">[</span><span class="s1">'E10:F12'</span><span class="p">]</span>
|
||||
<span class="c1"># Add multiple ranges</span>
|
||||
<span class="n">r</span><span class="o">.</span><span class="n">add</span><span class="p">((</span><span class="n">r2</span><span class="p">,</span> <span class="n">r3</span><span class="p">,</span> <span class="n">r4</span><span class="p">))</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">r</span><span class="o">.</span><span class="n">names</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul>
|
||||
<li><p>Get the same range in all sheets</p>
|
||||
<blockquote>
|
||||
<div><p>ranges = doc.get_ranges(‘A1:B1’)
|
||||
app.debug(ranges.names)</p>
|
||||
</div></blockquote>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -435,3 +435,26 @@ Ranges
|
|||
|
||||
rango = sheet[1:5,1:4]
|
||||
app.msgbox(rango.name)
|
||||
|
||||
* Group ranges
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
sheet = doc.active
|
||||
last = doc[-1]
|
||||
with doc.ranges as r:
|
||||
# Add one range
|
||||
r.add(sheet['A1:B2'])
|
||||
r2 = sheet['C4:D5']
|
||||
r3 = last['E7:D8']
|
||||
r4 = last['E10:F12']
|
||||
# Add multiple ranges
|
||||
r.add((r2, r3, r4))
|
||||
app.debug(r.names)
|
||||
|
||||
* Get the same range in all sheets
|
||||
|
||||
ranges = doc.get_ranges('A1:B1')
|
||||
app.debug(ranges.names)
|
||||
|
||||
|
|
|
@ -2963,6 +2963,7 @@ class LOCalcRanges(object):
|
|||
def __init__(self, obj):
|
||||
self._obj = obj
|
||||
self._ranges = {}
|
||||
self._index = 0
|
||||
|
||||
def __enter__(self):
|
||||
return self
|
||||
|
@ -2976,20 +2977,53 @@ class LOCalcRanges(object):
|
|||
def __contains__(self, item):
|
||||
return self._obj.hasByName(item.name)
|
||||
|
||||
def __iter__(self):
|
||||
self._index = 0
|
||||
return self
|
||||
|
||||
def __next__(self):
|
||||
try:
|
||||
r = self.obj[self._index]
|
||||
rango = self._ranges[r.AbsoluteName]
|
||||
except IndexError:
|
||||
raise StopIteration
|
||||
|
||||
self._index += 1
|
||||
return rango
|
||||
|
||||
def __getitem__(self, index):
|
||||
if isinstance(index, int):
|
||||
r = self.obj[index]
|
||||
rango = self._ranges[r.AbsoluteName]
|
||||
else:
|
||||
rango = self._ranges[index]
|
||||
return rango
|
||||
|
||||
@property
|
||||
def obj(self):
|
||||
return self._obj
|
||||
|
||||
@property
|
||||
def names(self):
|
||||
return self._obj.ElementNames
|
||||
return self.obj.ElementNames
|
||||
|
||||
@property
|
||||
def data(self):
|
||||
return [r.data for r in self._ranges.values()]
|
||||
|
||||
@property
|
||||
def style(self):
|
||||
return self.obj
|
||||
@style.setter
|
||||
def style(self, value):
|
||||
self.obj.CellStyle = value
|
||||
|
||||
def add(self, rangos):
|
||||
if isinstance(rangos, LOCalcRange):
|
||||
rangos = (rangos,)
|
||||
for r in rangos:
|
||||
self._ranges[r.name] = r
|
||||
self._obj.addRangeAddress(r.range_address, False)
|
||||
self.obj.addRangeAddress(r.range_address, False)
|
||||
return
|
||||
|
||||
def remove(self, rangos):
|
||||
|
@ -2997,7 +3031,7 @@ class LOCalcRanges(object):
|
|||
rangos = (rangos,)
|
||||
for r in rangos:
|
||||
del self._ranges[r.name]
|
||||
self._obj.removeRangeAddress(r.range_address)
|
||||
self.obj.removeRangeAddress(r.range_address)
|
||||
return
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue