From 87c8ead015e1a92453906cf6c918ca6559d57fb3 Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Wed, 7 Jul 2021 22:45:43 -0500 Subject: [PATCH] Get visible now return ranges object --- doc/source/main/calc_sheets.rst | 4 ++-- doc/source/main/examples_calc.rst | 15 +++++++++++++++ source/easymacro.py | 10 +++++++--- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/doc/source/main/calc_sheets.rst b/doc/source/main/calc_sheets.rst index 542a954..612351e 100644 --- a/doc/source/main/calc_sheets.rst +++ b/doc/source/main/calc_sheets.rst @@ -157,13 +157,13 @@ Copy .. code-block:: python sheet = doc[0] - doc.copy(sheet, 'OtherSheet') + doc.copy_sheet(sheet, 'OtherSheet') * By name .. code-block:: python - doc.copy('Sheet1', 'Sheet2') + doc.copy_sheet('Sheet1', 'Sheet2') * From sheet diff --git a/doc/source/main/examples_calc.rst b/doc/source/main/examples_calc.rst index 93f45ff..bc0188a 100644 --- a/doc/source/main/examples_calc.rst +++ b/doc/source/main/examples_calc.rst @@ -21,3 +21,18 @@ Automatic calculate size range. ) sheet['A1'].data = data return + + +Copy visible cells +^^^^^^^^^^^^^^^^^^ + +.. code-block:: python + + doc = app.active + rangos = doc.active['A1'].current_region.visible + doc.select(rangos) + doc.copy() + + doc.active['A15'].select() + doc.paste() + diff --git a/source/easymacro.py b/source/easymacro.py index 27ca1aa..062ba03 100644 --- a/source/easymacro.py +++ b/source/easymacro.py @@ -1469,7 +1469,7 @@ class LOCalc(LODocument): self._sheets.removeByName(name) return - def copy(self, name, new_name='', pos=-1): + def copy_sheet(self, name, new_name='', pos=-1): if isinstance(name, LOCalcSheet): name = name.name index = pos @@ -2624,8 +2624,8 @@ class LOCalcRange(object): def visible(self): cursor = self.cursor rangos = cursor.queryVisibleCells() - rangos = [LOCalcRange(self.sheet[r.AbsoluteName].obj) for r in rangos] - return tuple(rangos) + rangos = LOCalcRanges(rangos) + return rangos @property def merged_area(self): @@ -3001,6 +3001,10 @@ class LOCalcRanges(object): self._obj = obj self._ranges = {} self._index = 0 + for r in obj: + sheet = r.Spreadsheet + rango = LOCalcRange(sheet[r.AbsoluteName]) + self._ranges[rango.name] = rango def __enter__(self): return self