Compare commits
17 Commits
fd2f5631be
...
23135d9ad7
Author | SHA1 | Date |
---|---|---|
Mauricio Baeza | 23135d9ad7 | |
Mauricio Baeza | cdbb00fad4 | |
Mauricio Baeza | 37fc2568da | |
Mauricio Baeza | 5e2236db54 | |
Mauricio Baeza | d983fac3d1 | |
Mauricio Baeza | 19e211ce0a | |
Mauricio Baeza | 87c8ead015 | |
Mauricio Baeza | 37acf3cc06 | |
Mauricio Baeza | 62d2cd25c1 | |
Mauricio Baeza | b1355d5d88 | |
Mauricio Baeza | 6efa879c85 | |
Mauricio Baeza | 45e3f97e6c | |
Mauricio Baeza | 55dfe77aa9 | |
Mauricio Baeza | 043e5f5f29 | |
Mauricio Baeza | 686f1f6aea | |
Mauricio Baeza | 0e656fbecb | |
Mauricio Baeza | f9b2b7679a |
|
@ -1,7 +1,12 @@
|
|||
v 0.17.0 [10-jul-2021]
|
||||
- Add insert math in writer
|
||||
|
||||
|
||||
v 0.16.1 [01-jul-2021]
|
||||
- Change property is_connected in db
|
||||
- Update doc
|
||||
|
||||
|
||||
v 0.16.0 [20-jun-2021]
|
||||
- Add connection for postgres and mariadb
|
||||
- Fix in call macro Basic
|
||||
|
|
|
@ -4,9 +4,9 @@ Scripts and library for develop macros and extensions for LibreOffice with Pytho
|
|||
|
||||
Develop in pure Python, not need any dependence.
|
||||
|
||||
Python 3.7+
|
||||
LibreOffice 7.0+
|
||||
LibreOffice SDK 7.0+
|
||||
* Python 3.7+
|
||||
* LibreOffice 7.0+
|
||||
* LibreOffice SDK 7.0+
|
||||
|
||||
* Look [documentation](https://doc.cuates.net/zaz/)
|
||||
|
||||
|
@ -23,9 +23,11 @@ This extension have a cost of maintenance of 1 euros every year.
|
|||
In order of preferred.
|
||||
|
||||
Mauricio Baeza
|
||||
```
|
||||
Euros
|
||||
IBAN: BE60 9671 0556 5870
|
||||
SWIFT / BIC: TRWIBEB1XXX
|
||||
```
|
||||
|
||||
* FairCoin: `fJ7emvtyGfvcMuxk1nHSnS7gmeScdcZXL5`
|
||||
* Monero: `43H43TpQKYdYcw2ZCnn2nbjDh3imNQg8RGYS4oP4p7Z8aeBHg6VpeaFfBoMzDTUUDdQBiGkiQUSydJB96m6MqiEuEeyoopQ`
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -231,8 +231,20 @@ Export
|
|||
filter_name = 'doc'
|
||||
doc.export(path, filter_name)
|
||||
|
||||
path = '/home/mau/myfile.rtf'
|
||||
filter_name = 'rtf'
|
||||
doc.export(path, filter_name)
|
||||
|
||||
* For all support formats look `Apendix`_
|
||||
|
||||
* Export in memory.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.docs.new()
|
||||
filter_name = 'xlsx'
|
||||
excel_doc = doc.export(filter_name=filter_name)
|
||||
|
||||
|
||||
Fonst
|
||||
^^^^^
|
||||
|
@ -294,12 +306,14 @@ title
|
|||
|
||||
doc = app.active
|
||||
app.msgbox(doc.title)
|
||||
doc.title = 'New title'
|
||||
app.msgbox(doc.title)
|
||||
|
||||
|
||||
type
|
||||
~~~~
|
||||
|
||||
* Get type document: calc, writer, etc.
|
||||
* Get type document: calc, writer, etc. (read only)
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
|
@ -310,7 +324,7 @@ type
|
|||
uid
|
||||
~~~
|
||||
|
||||
* Get internal RuntimeUID form document.
|
||||
* Get internal RuntimeUID form document. (read only)
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
|
@ -321,7 +335,7 @@ uid
|
|||
is_saved
|
||||
~~~~~~~~
|
||||
|
||||
* If document is saved in this or not
|
||||
* If document is saved in this or not (read only)
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
|
@ -332,7 +346,7 @@ is_saved
|
|||
is_modified
|
||||
~~~~~~~~~~~
|
||||
|
||||
* If document has been modified
|
||||
* If document has been modified (read only)
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
|
@ -352,7 +366,7 @@ is_read_only
|
|||
path
|
||||
~~~~
|
||||
|
||||
* Get path of document.
|
||||
* Get path of document. (read only)
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
|
@ -361,9 +375,9 @@ path
|
|||
|
||||
|
||||
dir
|
||||
~~~~
|
||||
~~~
|
||||
|
||||
* Get only directory from path saved
|
||||
* Get only directory from path saved (read only)
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
|
@ -371,7 +385,124 @@ dir
|
|||
app.msgbox(doc.dir)
|
||||
|
||||
|
||||
file_name
|
||||
~~~~~~~~~
|
||||
|
||||
* Get only file name from path saved (read only)
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(doc.file_name)
|
||||
|
||||
|
||||
name
|
||||
~~~~
|
||||
|
||||
* Get only name without extension (read only)
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(doc.file_name)
|
||||
|
||||
|
||||
visible
|
||||
~~~~~~~
|
||||
|
||||
* Hide or show document.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
doc.visible = False
|
||||
app.msgbox(doc.visible)
|
||||
doc.visible = True
|
||||
|
||||
|
||||
zoom
|
||||
~~~~
|
||||
|
||||
* Get or set zoom value.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
zoom = doc.zoom
|
||||
app.msgbox(zoom)
|
||||
doc.zoom = zoom * 2
|
||||
app.msgbox(doc.zoom)
|
||||
doc.zoom = zoom
|
||||
|
||||
|
||||
selection
|
||||
~~~~~~~~~
|
||||
|
||||
* **CAUTION**: Selection can be many things.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
selection = doc.selection
|
||||
app.msgbox(selection)
|
||||
|
||||
|
||||
status_bar
|
||||
~~~~~~~~~~
|
||||
|
||||
* Get status bar, always control in other thread.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
@app.run_in_thread
|
||||
def update_status_bar(sb, text, limit):
|
||||
sb.start(text, limit)
|
||||
for i in range(limit):
|
||||
sb.setValue(i)
|
||||
app.sleep(1)
|
||||
# ~ Is important free status bar
|
||||
sb.end()
|
||||
return
|
||||
|
||||
def main():
|
||||
doc = app.active
|
||||
update_status_bar(doc.status_bar, 'Line', 10)
|
||||
return
|
||||
|
||||
|
||||
Methods
|
||||
^^^^^^^
|
||||
|
||||
set_focus
|
||||
~~~~~~~~~
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
name = 'MyDoc.ods'
|
||||
if name in app.docs:
|
||||
doc = app.docs[name]
|
||||
doc.set_focus()
|
||||
|
||||
copy
|
||||
~~~~
|
||||
|
||||
* Copy current selection
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
doc.copy()
|
||||
|
||||
|
||||
paste
|
||||
~~~~~
|
||||
|
||||
* Paste any content in clipboard
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
doc.paste()
|
||||
|
||||
|
||||
.. _dispatch command: https://wiki.documentfoundation.org/Development/DispatchCommands
|
||||
|
|
|
@ -1,27 +1,18 @@
|
|||
|
||||
Calc
|
||||
----
|
||||
|
||||
Remember, always import library.
|
||||
Remember, always import library.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import easymacro as app
|
||||
|
||||
|
||||
Current doc
|
||||
^^^^^^^^^^^
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(doc.type)
|
||||
|
||||
|
||||
Active sheet
|
||||
^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
app.msgbox(sheet.name)
|
||||
calc_doc.rst
|
||||
calc_sheets.rst
|
||||
calc_ranges.rst
|
||||
calc_ranges2.rst
|
||||
calc_data.rst
|
||||
|
|
|
@ -0,0 +1,92 @@
|
|||
|
||||
Data
|
||||
~~~~
|
||||
|
||||
Read
|
||||
^^^^
|
||||
|
||||
* Get value from cell, automatic detect type and get value.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
cell = sheet['A1']
|
||||
|
||||
value = cell.value
|
||||
info = f'Cell Type = {cell.type}\n\nCell Value = {cell.value}'
|
||||
app.msgbox(info)
|
||||
|
||||
* Get date, time and datetime like data Python.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
cell = sheet['A1']
|
||||
app.msgbox(cell.date)
|
||||
app.msgbox(cell.time)
|
||||
app.msgbox(cell.datetime)
|
||||
|
||||
* Get values from cell range.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1:B5']
|
||||
app.msgbox(rango.data)
|
||||
|
||||
* Get formulas
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1:B5']
|
||||
app.msgbox(rango.formula)
|
||||
|
||||
* Get array formula
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['C10:E15']
|
||||
app.msgbox(rango.array_formula)
|
||||
|
||||
* Get like dictionary
|
||||
|
||||
The first row in range are the keys.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1:B5']
|
||||
app.msgbox(rango.dict)
|
||||
|
||||
|
||||
Write
|
||||
^^^^^
|
||||
|
||||
* Automatic detect data type.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
|
||||
# ~ Set int
|
||||
sheet['A1'].value = 1
|
||||
|
||||
# ~ Set float
|
||||
sheet['A2'].value = 10.5
|
||||
|
||||
# ~ Set string
|
||||
sheet['A3'].value = 'Damn World'
|
||||
|
||||
# ~ Set formula
|
||||
sheet['A4'].value = '=RAND()'
|
||||
|
||||
# ~ Set date
|
||||
sheet['A5'].value = app.today()
|
||||
|
||||
# ~ Set time
|
||||
sheet['A6'].value = app.now(True)
|
||||
|
||||
# ~ Set datetime
|
||||
sheet['A7'].value = app.now()
|
|
@ -0,0 +1,50 @@
|
|||
Document
|
||||
~~~~~~~~
|
||||
|
||||
Current doc
|
||||
^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(doc.type)
|
||||
|
||||
|
||||
Selection
|
||||
^^^^^^^^^
|
||||
|
||||
* If selection is range get LOCalcRange, if selection is shape get LOShape, other selection get original pyuno object.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
selection = doc.selection
|
||||
app.msgbox(type(selection))
|
||||
|
||||
|
||||
Headers
|
||||
^^^^^^^
|
||||
|
||||
* Hide or show columns and rows headers.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(doc.headers)
|
||||
doc.headers = not doc.headers
|
||||
app.msgbox(doc.headers)
|
||||
doc.headers = not doc.headers
|
||||
|
||||
|
||||
Tabs
|
||||
^^^^
|
||||
|
||||
* Hide or show tab sheets.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(doc.tabs)
|
||||
doc.tabs = not doc.tabs
|
||||
app.msgbox(doc.tabs)
|
||||
doc.tabs = not doc.tabs
|
|
@ -0,0 +1,190 @@
|
|||
Cell and ranges
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
Cells
|
||||
^^^^^
|
||||
|
||||
* By name
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
cell = sheet['A1']
|
||||
app.msgbox(cell.name)
|
||||
|
||||
|
||||
* By position [row, column]
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
cell = sheet[1, 4]
|
||||
app.msgbox(cell.name)
|
||||
|
||||
|
||||
Ranges
|
||||
^^^^^^
|
||||
|
||||
* By name
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['B2:D5']
|
||||
app.msgbox(rango.name)
|
||||
|
||||
* By position [start_row:end_row, start_column:end_column]
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
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
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
ranges = doc.get_ranges('A1:B1')
|
||||
app.debug(ranges.names)
|
||||
|
||||
* Get columns by name.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['B:B']
|
||||
app.debug(rango.name)
|
||||
|
||||
rango = sheet['D:F']
|
||||
app.debug(rango.name)
|
||||
|
||||
* Get columns by position.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
# Column B
|
||||
rango = sheet[0:,1]
|
||||
app.debug(rango.name)
|
||||
|
||||
# Columnas D:F
|
||||
rango = sheet[0:,3:6]
|
||||
app.debug(rango.name)
|
||||
|
||||
|
||||
* Get rows
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
# One row
|
||||
row = sheet[1]
|
||||
app.debug(row.name)
|
||||
|
||||
# Range rows
|
||||
row = sheet[3:10,0:]
|
||||
app.debug(row.name)
|
||||
|
||||
|
||||
Info ranges
|
||||
^^^^^^^^^^^
|
||||
|
||||
* Get absolute name
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1:E10']
|
||||
app.msgbox(rango.name)
|
||||
|
||||
* Get address
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1']
|
||||
a = rango.address
|
||||
data = f"""Cell Address
|
||||
Row: {a.Row}
|
||||
Column: {a.Column}
|
||||
"""
|
||||
app.msgbox(data)
|
||||
|
||||
rango = sheet['A1:E10']
|
||||
ra = rango.range_address
|
||||
data = (
|
||||
f'Range Address:\n\n'
|
||||
f'Star Row: {ra.StartRow}\n'
|
||||
f'End Row: {ra.EndRow}\n'
|
||||
f'Star Column: {ra.StartColumn}\n'
|
||||
f'End Column: {ra.EndColumn}\n'
|
||||
)
|
||||
app.msgbox(data)
|
||||
|
||||
|
||||
Special ranges
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
* Get used area
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet.used_area
|
||||
app.msgbox(rango.name)
|
||||
|
||||
* Get current region
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
rango = sheet['A1'].current_region
|
||||
app.msgbox(rango.name)
|
||||
|
||||
* Get next free cell
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
cell = sheet['A1'].next_cell
|
||||
app.msgbox(cell.name)
|
||||
|
||||
* Get merged area
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1'].merged_area
|
||||
app.msgbox(rango.name)
|
||||
|
||||
* Get visible cells
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rangos = sheet['A1:E10'].visible
|
||||
for r in rangos:
|
||||
app.debug(r.name)
|
||||
|
||||
* Get empty cells
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rangos = sheet['A1:E10'].empty
|
||||
for r in rangos:
|
||||
app.debug(r.name)
|
|
@ -0,0 +1,124 @@
|
|||
Manipulate ranges
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
**Not, not is necesary select range for manipulate**
|
||||
|
||||
Select
|
||||
^^^^^^
|
||||
|
||||
* Select from doc
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
sheet = app.active_sheet
|
||||
|
||||
cell = sheet['A1']
|
||||
doc.select(cell)
|
||||
|
||||
|
||||
* Select in self range
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1:C5']
|
||||
rango.select()
|
||||
|
||||
|
||||
Move
|
||||
^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1:C5']
|
||||
rango.move(sheet['E6'])
|
||||
|
||||
* Move to other sheet
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
rango.move(doc[-1]['E6'])
|
||||
|
||||
|
||||
Insert
|
||||
^^^^^^
|
||||
|
||||
* Default insert down
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1:C1']
|
||||
rango.insert()
|
||||
|
||||
* Insert and move right
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
rango.insert(app.CellInsertMode.RIGHT)
|
||||
|
||||
* Insert entire rows
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
rango.insert(app.CellInsertMode.ROWS)
|
||||
|
||||
* Insert entire columns
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
rango.insert(app.CellInsertMode.COLUMNS)
|
||||
|
||||
|
||||
Delete
|
||||
^^^^^^
|
||||
|
||||
* Default move up
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1:C1']
|
||||
rango.delete()
|
||||
|
||||
* Delete and move left
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
rango.delete(app.CellDeleteMode.LEFT)
|
||||
|
||||
* Delete entire rows
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
rango.delete(app.CellDeleteMode.ROWS)
|
||||
|
||||
* Delete entire columns
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
rango.delete(app.CellDeleteMode.COLUMNS)
|
||||
|
||||
|
||||
Copy
|
||||
^^^^
|
||||
|
||||
* Using native method `copyRange`, current range always should be a cell and source should be a range.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
cell = sheet['A5']
|
||||
source = sheet['D1:E4']
|
||||
cell.copy_from(source)
|
||||
|
||||
* From range to cell
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1:C5']
|
||||
target = sheet['E1']
|
||||
rango.copy_to(target)
|
|
@ -0,0 +1,332 @@
|
|||
Sheets
|
||||
~~~~~~
|
||||
|
||||
Active sheet
|
||||
^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
app.msgbox(sheet.name)
|
||||
|
||||
# or
|
||||
doc = app.active
|
||||
sheet = doc.active
|
||||
|
||||
|
||||
Get by index
|
||||
^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
sheet = doc[0]
|
||||
app.msgbox(sheet.name)
|
||||
|
||||
|
||||
Get by name
|
||||
^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
sheet = doc['Sheet1']
|
||||
app.msgbox(sheet.name)
|
||||
|
||||
|
||||
Contains
|
||||
^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox('Sheet1' in doc)
|
||||
|
||||
|
||||
Get tuple with all names
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(doc.names)
|
||||
|
||||
|
||||
Count
|
||||
^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(len(doc))
|
||||
|
||||
New
|
||||
^^^
|
||||
|
||||
* Always validate if new name not exists.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
|
||||
sheet = doc.new_sheet()
|
||||
# CAUTION: If 'NewSheet' exists, reset it to clean sheet.
|
||||
doc['NewSheet'] = sheet
|
||||
|
||||
# ~ or
|
||||
|
||||
sheet = doc.insert('NewSheet2')
|
||||
|
||||
* Insert multiple, get last insert.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
names = ('One', 'Two', 'Three')
|
||||
sheet = doc.insert(names)
|
||||
|
||||
|
||||
Move
|
||||
^^^^
|
||||
|
||||
* Move by object to last position.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = doc[0]
|
||||
doc.move(sheet)
|
||||
|
||||
* Move by name to last position.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc.move('Sheet1')
|
||||
|
||||
* Move to position.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = doc[0]
|
||||
doc.move(sheet, 2)
|
||||
|
||||
* Move from sheet
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
sheet.move()
|
||||
|
||||
* Move to position.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
sheet.move(2)
|
||||
|
||||
|
||||
Remove
|
||||
^^^^^^
|
||||
|
||||
* Remove by object.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = doc[0]
|
||||
doc.remove(sheet)
|
||||
|
||||
* Remove by name.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc.remove('One')
|
||||
|
||||
* Remove from sheet.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
sheet.remove()
|
||||
|
||||
|
||||
Copy
|
||||
^^^^
|
||||
|
||||
* Copy inside the same spreadsheet.
|
||||
|
||||
* By object
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = doc[0]
|
||||
doc.copy(sheet, 'OtherSheet')
|
||||
|
||||
* By name
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc.copy('Sheet1', 'Sheet2')
|
||||
|
||||
* From sheet
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
sheet.copy(sheet.name + '_2')
|
||||
|
||||
|
||||
Copy from
|
||||
^^^^^^^^^
|
||||
|
||||
* Copy sheet from one spreadsheet to other.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
doc_source = app.docs['Contacts.ods']
|
||||
name_source = 'Names'
|
||||
name_target = 'Names'
|
||||
position = 0
|
||||
doc.copy_from(doc_source, name_source, name_target, position)
|
||||
|
||||
|
||||
Copy to
|
||||
^^^^^^^
|
||||
|
||||
* Copy from sheet with the same name
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.docs.new()
|
||||
sheet = app.active_sheet
|
||||
sheet.copy_to(doc)
|
||||
|
||||
* Used new name
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.docs.new()
|
||||
sheet = app.active_sheet
|
||||
sheet.copy_to(doc, 'NewName')
|
||||
|
||||
|
||||
Sort
|
||||
^^^^
|
||||
|
||||
* Sort sheets by names.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
doc.sort()
|
||||
|
||||
Name
|
||||
^^^^
|
||||
|
||||
* Name visible by the user.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
app.msgbox(sheet.name)
|
||||
sheet.name = 'NewName'
|
||||
app.msgbox(sheet.name)
|
||||
|
||||
|
||||
Code name
|
||||
^^^^^^^^^
|
||||
|
||||
* Name only accessible by code.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
app.msgbox(sheet.code_name)
|
||||
sheet.code_name = 'my_name'
|
||||
app.msgbox(sheet.code_name)
|
||||
|
||||
|
||||
Visible
|
||||
^^^^^^^
|
||||
|
||||
* Apply only with spreadsheet with two or more sheets.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
app.msgbox(sheet.visible)
|
||||
sheet.visible = not sheet.visible
|
||||
app.msgbox(sheet.visible)
|
||||
sheet.visible = not sheet.visible
|
||||
|
||||
|
||||
Is protected
|
||||
^^^^^^^^^^^^
|
||||
|
||||
* If sheet is protected with password.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
app.msgbox(sheet.is_protected)
|
||||
|
||||
|
||||
Set password
|
||||
^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
sheet.password = 'letmein'
|
||||
app.msgbox(sheet.is_protected)
|
||||
|
||||
|
||||
Remove password
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
sheet.password = 'letmein'
|
||||
app.msgbox(sheet.is_protected)
|
||||
|
||||
sheet.unprotect('letmein')
|
||||
app.msgbox(sheet.is_protected)
|
||||
|
||||
|
||||
Tab color
|
||||
^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
app.msgbox(sheet.color)
|
||||
|
||||
sheet.color = 'red'
|
||||
app.msgbox(sheet.color)
|
||||
|
||||
# RGB
|
||||
sheet.color = (125, 200, 10)
|
||||
app.msgbox(sheet.color)
|
||||
|
||||
|
||||
Document parent
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = sheet.doc
|
||||
|
||||
|
||||
Activate
|
||||
^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
# Get last sheet
|
||||
sheet = doc[-1]
|
||||
|
||||
# Activate from doc
|
||||
doc.activate(sheet)
|
||||
|
||||
# Activate from sheet
|
||||
sheet.activate()
|
|
@ -220,11 +220,21 @@
|
|||
<span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/myfile.doc'</span>
|
||||
<span class="n">filter_name</span> <span class="o">=</span> <span class="s1">'doc'</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">export</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">filter_name</span><span class="p">)</span>
|
||||
|
||||
<span class="n">path</span> <span class="o">=</span> <span class="s1">'/home/mau/myfile.rtf'</span>
|
||||
<span class="n">filter_name</span> <span class="o">=</span> <span class="s1">'rtf'</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">export</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">filter_name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>For all support formats look <a class="reference external" href="apendixes.html">Apendix</a></p></li>
|
||||
<li><p>Export in memory.</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">docs</span><span class="o">.</span><span class="n">new</span><span class="p">()</span>
|
||||
<span class="n">filter_name</span> <span class="o">=</span> <span class="s1">'xlsx'</span>
|
||||
<span class="n">excel_doc</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="n">export</span><span class="p">(</span><span class="n">filter_name</span><span class="o">=</span><span class="n">filter_name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="fonst">
|
||||
<h2>Fonst<a class="headerlink" href="#fonst" title="Permalink to this headline">¶</a></h2>
|
||||
|
@ -276,13 +286,15 @@
|
|||
<h3>title<a class="headerlink" href="#title" title="Permalink to this headline">¶</a></h3>
|
||||
<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">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">title</span><span class="p">)</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">title</span> <span class="o">=</span> <span class="s1">'New title'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">title</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="type">
|
||||
<h3>type<a class="headerlink" href="#type" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>Get type document: calc, writer, etc.</p></li>
|
||||
<li><p>Get type document: calc, writer, etc. (read only)</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">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">type</span><span class="p">)</span>
|
||||
|
@ -292,7 +304,7 @@
|
|||
<section id="uid">
|
||||
<h3>uid<a class="headerlink" href="#uid" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>Get internal RuntimeUID form document.</p></li>
|
||||
<li><p>Get internal RuntimeUID form document. (read only)</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">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">uid</span><span class="p">)</span>
|
||||
|
@ -302,7 +314,7 @@
|
|||
<section id="is-saved">
|
||||
<h3>is_saved<a class="headerlink" href="#is-saved" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>If document is saved in this or not</p></li>
|
||||
<li><p>If document is saved in this or not (read only)</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">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">is_saved</span><span class="p">)</span>
|
||||
|
@ -312,7 +324,7 @@
|
|||
<section id="is-modified">
|
||||
<h3>is_modified<a class="headerlink" href="#is-modified" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>If document has been modified</p></li>
|
||||
<li><p>If document has been modified (read only)</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">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">is_modified</span><span class="p">)</span>
|
||||
|
@ -329,7 +341,7 @@
|
|||
<section id="path">
|
||||
<h3>path<a class="headerlink" href="#path" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>Get path of document.</p></li>
|
||||
<li><p>Get path of document. (read only)</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">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">path</span><span class="p">)</span>
|
||||
|
@ -339,13 +351,124 @@
|
|||
<section id="dir">
|
||||
<h3>dir<a class="headerlink" href="#dir" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>Get only directory from path saved</p></li>
|
||||
<li><p>Get only directory from path saved (read only)</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">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">dir</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="file-name">
|
||||
<h3>file_name<a class="headerlink" href="#file-name" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>Get only file name from path saved (read only)</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">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">file_name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="name">
|
||||
<h3>name<a class="headerlink" href="#name" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>Get only name without extension (read only)</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">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">file_name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="visible">
|
||||
<h3>visible<a class="headerlink" href="#visible" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>Hide or show document.</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">doc</span><span class="o">.</span><span class="n">visible</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">visible</span><span class="p">)</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">visible</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="zoom">
|
||||
<h3>zoom<a class="headerlink" href="#zoom" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>Get or set zoom value.</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">zoom</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="n">zoom</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">zoom</span><span class="p">)</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">zoom</span> <span class="o">=</span> <span class="n">zoom</span> <span class="o">*</span> <span class="mi">2</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">zoom</span><span class="p">)</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">zoom</span> <span class="o">=</span> <span class="n">zoom</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="selection">
|
||||
<h3>selection<a class="headerlink" href="#selection" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p><strong>CAUTION</strong>: Selection can be many things.</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">selection</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="n">selection</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">selection</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="status-bar">
|
||||
<h3>status_bar<a class="headerlink" href="#status-bar" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>Get status bar, always control in other thread.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="nd">@app</span><span class="o">.</span><span class="n">run_in_thread</span>
|
||||
<span class="k">def</span> <span class="nf">update_status_bar</span><span class="p">(</span><span class="n">sb</span><span class="p">,</span> <span class="n">text</span><span class="p">,</span> <span class="n">limit</span><span class="p">):</span>
|
||||
<span class="n">sb</span><span class="o">.</span><span class="n">start</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="n">limit</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">limit</span><span class="p">):</span>
|
||||
<span class="n">sb</span><span class="o">.</span><span class="n">setValue</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="c1"># ~ Is important free status bar</span>
|
||||
<span class="n">sb</span><span class="o">.</span><span class="n">end</span><span class="p">()</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">main</span><span class="p">():</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">update_status_bar</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">status_bar</span><span class="p">,</span> <span class="s1">'Line'</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="methods">
|
||||
<h2>Methods<a class="headerlink" href="#methods" title="Permalink to this headline">¶</a></h2>
|
||||
<section id="set-focus">
|
||||
<h3>set_focus<a class="headerlink" href="#set-focus" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">name</span> <span class="o">=</span> <span class="s1">'MyDoc.ods'</span>
|
||||
<span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="p">:</span>
|
||||
<span class="n">doc</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">set_focus</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="copy">
|
||||
<h3>copy<a class="headerlink" href="#copy" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>Copy current selection</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">doc</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="paste">
|
||||
<h3>paste<a class="headerlink" href="#paste" title="Permalink to this headline">¶</a></h3>
|
||||
<ul class="simple">
|
||||
<li><p>Paste any content in clipboard</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">doc</span><span class="o">.</span><span class="n">paste</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
<script src="../_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="Writer" href="writer.html" />
|
||||
<link rel="next" title="Document" href="calc_doc.html" />
|
||||
<link rel="prev" title="Application" href="application.html" />
|
||||
|
||||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||||
|
@ -35,24 +35,66 @@
|
|||
|
||||
<section id="calc">
|
||||
<h1>Calc<a class="headerlink" href="#calc" title="Permalink to this headline">¶</a></h1>
|
||||
<p>Remember, always import library.</p>
|
||||
<p>Remember, always import library.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">easymacro</span> <span class="k">as</span> <span class="nn">app</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<section id="current-doc">
|
||||
<h2>Current doc<a class="headerlink" href="#current-doc" title="Permalink to this headline">¶</a></h2>
|
||||
<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">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">type</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
<div class="toctree-wrapper compound">
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="calc_doc.html">Document</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_doc.html#current-doc">Current doc</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_doc.html#selection">Selection</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_doc.html#headers">Headers</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_doc.html#tabs">Tabs</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="calc_sheets.html">Sheets</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#active-sheet">Active sheet</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#get-by-index">Get by index</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#get-by-name">Get by name</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#contains">Contains</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#get-tuple-with-all-names">Get tuple with all names</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#count">Count</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#new">New</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#move">Move</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#remove">Remove</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#copy">Copy</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#copy-from">Copy from</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#copy-to">Copy to</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#sort">Sort</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#name">Name</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#code-name">Code name</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#visible">Visible</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#is-protected">Is protected</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#set-password">Set password</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#remove-password">Remove password</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#tab-color">Tab color</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#document-parent">Document parent</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html#activate">Activate</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="calc_ranges.html">Cell and ranges</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_ranges.html#cells">Cells</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_ranges.html#ranges">Ranges</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_ranges.html#info-ranges">Info ranges</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_ranges.html#special-ranges">Special ranges</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="calc_ranges2.html">Manipulate ranges</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_ranges2.html#select">Select</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_ranges2.html#move">Move</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_ranges2.html#insert">Insert</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_ranges2.html#delete">Delete</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_ranges2.html#copy">Copy</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="calc_data.html">Data</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_data.html#read">Read</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_data.html#write">Write</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
<section id="active-sheet">
|
||||
<h2>Active sheet<a class="headerlink" href="#active-sheet" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
|
@ -88,6 +130,7 @@
|
|||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="apendixes.html">Apendixes</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
|
@ -96,7 +139,7 @@
|
|||
<li><a href="../index.html">Documentation overview</a><ul>
|
||||
<li><a href="easymacro.html">Library easymacro.py</a><ul>
|
||||
<li>Previous: <a href="application.html" title="previous chapter">Application</a></li>
|
||||
<li>Next: <a href="writer.html" title="next chapter">Writer</a></li>
|
||||
<li>Next: <a href="calc_doc.html" title="next chapter">Document</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
|
|
|
@ -0,0 +1,214 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Data — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="Writer" href="writer.html" />
|
||||
<link rel="prev" title="Manipulate ranges" href="calc_ranges2.html" />
|
||||
|
||||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="data">
|
||||
<h1>Data<a class="headerlink" href="#data" title="Permalink to this headline">¶</a></h1>
|
||||
<section id="read">
|
||||
<h2>Read<a class="headerlink" href="#read" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Get value from cell, automatic detect type and get value.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">cell</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1'</span><span class="p">]</span>
|
||||
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">cell</span><span class="o">.</span><span class="n">value</span>
|
||||
<span class="n">info</span> <span class="o">=</span> <span class="sa">f</span><span class="s1">'Cell Type = </span><span class="si">{</span><span class="n">cell</span><span class="o">.</span><span class="n">type</span><span class="si">}</span><span class="se">\n\n</span><span class="s1">Cell Value = </span><span class="si">{</span><span class="n">cell</span><span class="o">.</span><span class="n">value</span><span class="si">}</span><span class="s1">'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">info</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get date, time and datetime like data Python.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">cell</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1'</span><span class="p">]</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">cell</span><span class="o">.</span><span class="n">date</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">cell</span><span class="o">.</span><span class="n">time</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">cell</span><span class="o">.</span><span class="n">datetime</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get values from cell range.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1:B5'</span><span class="p">]</span>
|
||||
<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">data</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get formulas</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1:B5'</span><span class="p">]</span>
|
||||
<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">formula</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get array formula</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'C10:E15'</span><span class="p">]</span>
|
||||
<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">array_formula</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get like dictionary</p></li>
|
||||
</ul>
|
||||
<p>The first row in range are the keys.</p>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1:B5'</span><span class="p">]</span>
|
||||
<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">dict</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="write">
|
||||
<h2>Write<a class="headerlink" href="#write" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Automatic detect data type.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
|
||||
<span class="c1"># ~ Set int</span>
|
||||
<span class="n">sheet</span><span class="p">[</span><span class="s1">'A1'</span><span class="p">]</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
|
||||
<span class="c1"># ~ Set float</span>
|
||||
<span class="n">sheet</span><span class="p">[</span><span class="s1">'A2'</span><span class="p">]</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="mf">10.5</span>
|
||||
|
||||
<span class="c1"># ~ Set string</span>
|
||||
<span class="n">sheet</span><span class="p">[</span><span class="s1">'A3'</span><span class="p">]</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="s1">'Damn World'</span>
|
||||
|
||||
<span class="c1"># ~ Set formula</span>
|
||||
<span class="n">sheet</span><span class="p">[</span><span class="s1">'A4'</span><span class="p">]</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="s1">'=RAND()'</span>
|
||||
|
||||
<span class="c1"># ~ Set date</span>
|
||||
<span class="n">sheet</span><span class="p">[</span><span class="s1">'A5'</span><span class="p">]</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">today</span><span class="p">()</span>
|
||||
|
||||
<span class="c1"># ~ Set time</span>
|
||||
<span class="n">sheet</span><span class="p">[</span><span class="s1">'A6'</span><span class="p">]</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">now</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># ~ Set datetime</span>
|
||||
<span class="n">sheet</span><span class="p">[</span><span class="s1">'A7'</span><span class="p">]</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">now</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../index.html">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration</a></li>
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="easymacro.html">Library easymacro.py</a><ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools_for_debug.html">Tools for debug</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html">Tools</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html">Paths and files</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="email.html">Email</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html">Application</a></li>
|
||||
<li class="toctree-l2 current"><a class="reference internal" href="calc.html">Calc</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="writer.html">Writer</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="base.html">Base</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="apendixes.html">Apendixes</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../index.html">Documentation overview</a><ul>
|
||||
<li><a href="easymacro.html">Library easymacro.py</a><ul>
|
||||
<li><a href="calc.html">Calc</a><ul>
|
||||
<li>Previous: <a href="calc_ranges2.html" title="previous chapter">Manipulate ranges</a></li>
|
||||
<li>Next: <a href="writer.html" title="next chapter">Writer</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="../_sources/main/calc_data.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,171 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Document — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="Sheets" href="calc_sheets.html" />
|
||||
<link rel="prev" title="Calc" href="calc.html" />
|
||||
|
||||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="document">
|
||||
<h1>Document<a class="headerlink" href="#document" title="Permalink to this headline">¶</a></h1>
|
||||
<section id="current-doc">
|
||||
<h2>Current doc<a class="headerlink" href="#current-doc" title="Permalink to this headline">¶</a></h2>
|
||||
<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">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">type</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="selection">
|
||||
<h2>Selection<a class="headerlink" href="#selection" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>If selection is range get LOCalcRange, if selection is shape get LOShape, other selection get original pyuno object.</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">selection</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="n">selection</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">selection</span><span class="p">))</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="headers">
|
||||
<h2>Headers<a class="headerlink" href="#headers" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Hide or show columns and rows headers.</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">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">headers</span><span class="p">)</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">headers</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">doc</span><span class="o">.</span><span class="n">headers</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">headers</span><span class="p">)</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">headers</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">doc</span><span class="o">.</span><span class="n">headers</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="tabs">
|
||||
<h2>Tabs<a class="headerlink" href="#tabs" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Hide or show tab sheets.</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">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">tabs</span><span class="p">)</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">tabs</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">doc</span><span class="o">.</span><span class="n">tabs</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">tabs</span><span class="p">)</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">tabs</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">doc</span><span class="o">.</span><span class="n">tabs</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../index.html">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration</a></li>
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="easymacro.html">Library easymacro.py</a><ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools_for_debug.html">Tools for debug</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html">Tools</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html">Paths and files</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="email.html">Email</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html">Application</a></li>
|
||||
<li class="toctree-l2 current"><a class="reference internal" href="calc.html">Calc</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="writer.html">Writer</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="base.html">Base</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="apendixes.html">Apendixes</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../index.html">Documentation overview</a><ul>
|
||||
<li><a href="easymacro.html">Library easymacro.py</a><ul>
|
||||
<li><a href="calc.html">Calc</a><ul>
|
||||
<li>Previous: <a href="calc.html" title="previous chapter">Calc</a></li>
|
||||
<li>Next: <a href="calc_sheets.html" title="next chapter">Sheets</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="../_sources/main/calc_doc.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,310 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Cell and ranges — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="Data" href="calc_data.html" />
|
||||
<link rel="prev" title="Sheets" href="calc_sheets.html" />
|
||||
|
||||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="cell-and-ranges">
|
||||
<h1>Cell and ranges<a class="headerlink" href="#cell-and-ranges" title="Permalink to this headline">¶</a></h1>
|
||||
<section id="cells">
|
||||
<h2>Cells<a class="headerlink" href="#cells" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>By name</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">cell</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1'</span><span class="p">]</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">cell</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>By position [row, column]</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">cell</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">4</span><span class="p">]</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">cell</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="ranges">
|
||||
<h2>Ranges<a class="headerlink" href="#ranges" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>By name</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'B2:D5'</span><span class="p">]</span>
|
||||
<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>By position [start_row:end_row, start_column:end_column]</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="mi">5</span><span class="p">,</span><span class="mi">1</span><span class="p">:</span><span class="mi">4</span><span class="p">]</span>
|
||||
<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 class="simple">
|
||||
<li><p>Get the same range in all sheets</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">ranges</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="n">get_ranges</span><span class="p">(</span><span class="s1">'A1:B1'</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">ranges</span><span class="o">.</span><span class="n">names</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get columns by name.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'B:B'</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">rango</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'D:F'</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">rango</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get columns by position.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="c1"># Column B</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="mi">0</span><span class="p">:,</span><span class="mi">1</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">rango</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Columnas D:F</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="mi">0</span><span class="p">:,</span><span class="mi">3</span><span class="p">:</span><span class="mi">6</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">rango</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get rows</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="c1"># One row</span>
|
||||
<span class="n">row</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="mi">1</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">row</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Range rows</span>
|
||||
<span class="n">row</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="mi">3</span><span class="p">:</span><span class="mi">10</span><span class="p">,</span><span class="mi">0</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">row</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="info-ranges">
|
||||
<h2>Info ranges<a class="headerlink" href="#info-ranges" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Get absolute name</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1:E10'</span><span class="p">]</span>
|
||||
<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>Get address</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1'</span><span class="p">]</span>
|
||||
<span class="n">a</span> <span class="o">=</span> <span class="n">rango</span><span class="o">.</span><span class="n">address</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"""Cell Address</span>
|
||||
<span class="s2">Row: </span><span class="si">{</span><span class="n">a</span><span class="o">.</span><span class="n">Row</span><span class="si">}</span><span class="s2"></span>
|
||||
<span class="s2">Column: </span><span class="si">{</span><span class="n">a</span><span class="o">.</span><span class="n">Column</span><span class="si">}</span><span class="s2"></span>
|
||||
<span class="s2">"""</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1:E10'</span><span class="p">]</span>
|
||||
<span class="n">ra</span> <span class="o">=</span> <span class="n">rango</span><span class="o">.</span><span class="n">range_address</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s1">'Range Address:</span><span class="se">\n\n</span><span class="s1">'</span>
|
||||
<span class="sa">f</span><span class="s1">'Star Row: </span><span class="si">{</span><span class="n">ra</span><span class="o">.</span><span class="n">StartRow</span><span class="si">}</span><span class="se">\n</span><span class="s1">'</span>
|
||||
<span class="sa">f</span><span class="s1">'End Row: </span><span class="si">{</span><span class="n">ra</span><span class="o">.</span><span class="n">EndRow</span><span class="si">}</span><span class="se">\n</span><span class="s1">'</span>
|
||||
<span class="sa">f</span><span class="s1">'Star Column: </span><span class="si">{</span><span class="n">ra</span><span class="o">.</span><span class="n">StartColumn</span><span class="si">}</span><span class="se">\n</span><span class="s1">'</span>
|
||||
<span class="sa">f</span><span class="s1">'End Column: </span><span class="si">{</span><span class="n">ra</span><span class="o">.</span><span class="n">EndColumn</span><span class="si">}</span><span class="se">\n</span><span class="s1">'</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="special-ranges">
|
||||
<h2>Special ranges<a class="headerlink" href="#special-ranges" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Get used area</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="o">.</span><span class="n">used_area</span>
|
||||
<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>Get current region</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1'</span><span class="p">]</span><span class="o">.</span><span class="n">current_region</span>
|
||||
<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>Get next free cell</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">cell</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1'</span><span class="p">]</span><span class="o">.</span><span class="n">next_cell</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">cell</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get merged area</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1'</span><span class="p">]</span><span class="o">.</span><span class="n">merged_area</span>
|
||||
<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>Get visible cells</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rangos</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1:E10'</span><span class="p">]</span><span class="o">.</span><span class="n">visible</span>
|
||||
<span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">rangos</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">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Get empty cells</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rangos</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1:E10'</span><span class="p">]</span><span class="o">.</span><span class="n">empty</span>
|
||||
<span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">rangos</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">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../index.html">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration</a></li>
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="easymacro.html">Library easymacro.py</a><ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools_for_debug.html">Tools for debug</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html">Tools</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html">Paths and files</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="email.html">Email</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html">Application</a></li>
|
||||
<li class="toctree-l2 current"><a class="reference internal" href="calc.html">Calc</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="writer.html">Writer</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="base.html">Base</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="apendixes.html">Apendixes</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../index.html">Documentation overview</a><ul>
|
||||
<li><a href="easymacro.html">Library easymacro.py</a><ul>
|
||||
<li><a href="calc.html">Calc</a><ul>
|
||||
<li>Previous: <a href="calc_sheets.html" title="previous chapter">Sheets</a></li>
|
||||
<li>Next: <a href="calc_data.html" title="next chapter">Data</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="../_sources/main/calc_ranges.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,242 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Manipulate ranges — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="Data" href="calc_data.html" />
|
||||
<link rel="prev" title="Cell and ranges" href="calc_ranges.html" />
|
||||
|
||||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="manipulate-ranges">
|
||||
<h1>Manipulate ranges<a class="headerlink" href="#manipulate-ranges" title="Permalink to this headline">¶</a></h1>
|
||||
<p><strong>Not, not is necesary select range for manipulate</strong></p>
|
||||
<section id="select">
|
||||
<h2>Select<a class="headerlink" href="#select" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Select from doc</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">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
|
||||
<span class="n">cell</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1'</span><span class="p">]</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">cell</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Select in self range</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1:C5'</span><span class="p">]</span>
|
||||
<span class="n">rango</span><span class="o">.</span><span class="n">select</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="move">
|
||||
<h2>Move<a class="headerlink" href="#move" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1:C5'</span><span class="p">]</span>
|
||||
<span class="n">rango</span><span class="o">.</span><span class="n">move</span><span class="p">(</span><span class="n">sheet</span><span class="p">[</span><span class="s1">'E6'</span><span class="p">])</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Move to other sheet</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">rango</span><span class="o">.</span><span class="n">move</span><span class="p">(</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="s1">'E6'</span><span class="p">])</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="insert">
|
||||
<h2>Insert<a class="headerlink" href="#insert" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Default insert down</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1:C1'</span><span class="p">]</span>
|
||||
<span class="n">rango</span><span class="o">.</span><span class="n">insert</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Insert and move right</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">rango</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">CellInsertMode</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Insert entire rows</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">rango</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">CellInsertMode</span><span class="o">.</span><span class="n">ROWS</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Insert entire columns</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">rango</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">CellInsertMode</span><span class="o">.</span><span class="n">COLUMNS</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="delete">
|
||||
<h2>Delete<a class="headerlink" href="#delete" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Default move up</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1:C1'</span><span class="p">]</span>
|
||||
<span class="n">rango</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Delete and move left</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">rango</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">CellDeleteMode</span><span class="o">.</span><span class="n">LEFT</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Delete entire rows</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">rango</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">CellDeleteMode</span><span class="o">.</span><span class="n">ROWS</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Delete entire columns</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">rango</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">CellDeleteMode</span><span class="o">.</span><span class="n">COLUMNS</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="copy">
|
||||
<h2>Copy<a class="headerlink" href="#copy" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Using native method <cite>copyRange</cite>, current range always should be a cell and source should be a range.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">cell</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A5'</span><span class="p">]</span>
|
||||
<span class="n">source</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'D1:E4'</span><span class="p">]</span>
|
||||
<span class="n">cell</span><span class="o">.</span><span class="n">copy_from</span><span class="p">(</span><span class="n">source</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>From range to cell</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">rango</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'A1:C5'</span><span class="p">]</span>
|
||||
<span class="n">target</span> <span class="o">=</span> <span class="n">sheet</span><span class="p">[</span><span class="s1">'E1'</span><span class="p">]</span>
|
||||
<span class="n">rango</span><span class="o">.</span><span class="n">copy_to</span><span class="p">(</span><span class="n">target</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../index.html">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration</a></li>
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="easymacro.html">Library easymacro.py</a><ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools_for_debug.html">Tools for debug</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html">Tools</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html">Paths and files</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="email.html">Email</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html">Application</a></li>
|
||||
<li class="toctree-l2 current"><a class="reference internal" href="calc.html">Calc</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="writer.html">Writer</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="base.html">Base</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="apendixes.html">Apendixes</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../index.html">Documentation overview</a><ul>
|
||||
<li><a href="easymacro.html">Library easymacro.py</a><ul>
|
||||
<li><a href="calc.html">Calc</a><ul>
|
||||
<li>Previous: <a href="calc_ranges.html" title="previous chapter">Cell and ranges</a></li>
|
||||
<li>Next: <a href="calc_data.html" title="next chapter">Data</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="../_sources/main/calc_ranges2.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,426 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||||
|
||||
<title>Sheets — ZAZ documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css" />
|
||||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="next" title="Data" href="calc_data.html" />
|
||||
<link rel="prev" title="Document" href="calc_doc.html" />
|
||||
|
||||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="sheets">
|
||||
<h1>Sheets<a class="headerlink" href="#sheets" title="Permalink to this headline">¶</a></h1>
|
||||
<section id="active-sheet">
|
||||
<h2>Active sheet<a class="headerlink" href="#active-sheet" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># or</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>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="get-by-index">
|
||||
<h2>Get by index<a class="headerlink" href="#get-by-index" title="Permalink to this headline">¶</a></h2>
|
||||
<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="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="get-by-name">
|
||||
<h2>Get by name<a class="headerlink" href="#get-by-name" title="Permalink to this headline">¶</a></h2>
|
||||
<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="p">[</span><span class="s1">'Sheet1'</span><span class="p">]</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="contains">
|
||||
<h2>Contains<a class="headerlink" href="#contains" title="Permalink to this headline">¶</a></h2>
|
||||
<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">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="s1">'Sheet1'</span> <span class="ow">in</span> <span class="n">doc</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="get-tuple-with-all-names">
|
||||
<h2>Get tuple with all names<a class="headerlink" href="#get-tuple-with-all-names" title="Permalink to this headline">¶</a></h2>
|
||||
<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">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">names</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="count">
|
||||
<h2>Count<a class="headerlink" href="#count" title="Permalink to this headline">¶</a></h2>
|
||||
<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">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">doc</span><span class="p">))</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="new">
|
||||
<h2>New<a class="headerlink" href="#new" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Always validate if new name not exists.</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">new_sheet</span><span class="p">()</span>
|
||||
<span class="c1"># CAUTION: If 'NewSheet' exists, reset it to clean sheet.</span>
|
||||
<span class="n">doc</span><span class="p">[</span><span class="s1">'NewSheet'</span><span class="p">]</span> <span class="o">=</span> <span class="n">sheet</span>
|
||||
|
||||
<span class="c1"># ~ or</span>
|
||||
|
||||
<span class="n">sheet</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="s1">'NewSheet2'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Insert multiple, get last insert.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">names</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'One'</span><span class="p">,</span> <span class="s1">'Two'</span><span class="p">,</span> <span class="s1">'Three'</span><span class="p">)</span>
|
||||
<span class="n">sheet</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="n">names</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="move">
|
||||
<h2>Move<a class="headerlink" href="#move" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Move by object to last position.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">doc</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">move</span><span class="p">(</span><span class="n">sheet</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Move by name to last position.</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">move</span><span class="p">(</span><span class="s1">'Sheet1'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Move to position.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">doc</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">move</span><span class="p">(</span><span class="n">sheet</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Move from sheet</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">move</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Move to position.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">move</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="remove">
|
||||
<h2>Remove<a class="headerlink" href="#remove" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Remove by object.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">doc</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">sheet</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Remove by name.</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">remove</span><span class="p">(</span><span class="s1">'One'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Remove from sheet.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">remove</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="copy">
|
||||
<h2>Copy<a class="headerlink" href="#copy" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Copy inside the same spreadsheet.</p></li>
|
||||
<li><p>By object</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">doc</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">sheet</span><span class="p">,</span> <span class="s1">'OtherSheet'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>By name</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">copy</span><span class="p">(</span><span class="s1">'Sheet1'</span><span class="p">,</span> <span class="s1">'Sheet2'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>From sheet</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s1">'_2'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="copy-from">
|
||||
<h2>Copy from<a class="headerlink" href="#copy-from" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Copy sheet from one spreadsheet to other.</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">doc_source</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">docs</span><span class="p">[</span><span class="s1">'Contacts.ods'</span><span class="p">]</span>
|
||||
<span class="n">name_source</span> <span class="o">=</span> <span class="s1">'Names'</span>
|
||||
<span class="n">name_target</span> <span class="o">=</span> <span class="s1">'Names'</span>
|
||||
<span class="n">position</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">copy_from</span><span class="p">(</span><span class="n">doc_source</span><span class="p">,</span> <span class="n">name_source</span><span class="p">,</span> <span class="n">name_target</span><span class="p">,</span> <span class="n">position</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="copy-to">
|
||||
<h2>Copy to<a class="headerlink" href="#copy-to" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Copy from sheet with the same name</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">docs</span><span class="o">.</span><span class="n">new</span><span class="p">()</span>
|
||||
<span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">copy_to</span><span class="p">(</span><span class="n">doc</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<ul class="simple">
|
||||
<li><p>Used new name</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">docs</span><span class="o">.</span><span class="n">new</span><span class="p">()</span>
|
||||
<span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">copy_to</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="s1">'NewName'</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="sort">
|
||||
<h2>Sort<a class="headerlink" href="#sort" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Sort sheets by names.</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">doc</span><span class="o">.</span><span class="n">sort</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="name">
|
||||
<h2>Name<a class="headerlink" href="#name" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Name visible by the user.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="s1">'NewName'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="code-name">
|
||||
<h2>Code name<a class="headerlink" href="#code-name" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Name only accessible by code.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">code_name</span><span class="p">)</span>
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">code_name</span> <span class="o">=</span> <span class="s1">'my_name'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">code_name</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="visible">
|
||||
<h2>Visible<a class="headerlink" href="#visible" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Apply only with spreadsheet with two or more sheets.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">visible</span><span class="p">)</span>
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">visible</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">sheet</span><span class="o">.</span><span class="n">visible</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">visible</span><span class="p">)</span>
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">visible</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">sheet</span><span class="o">.</span><span class="n">visible</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="is-protected">
|
||||
<h2>Is protected<a class="headerlink" href="#is-protected" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>If sheet is protected with password.</p></li>
|
||||
</ul>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">is_protected</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="set-password">
|
||||
<h2>Set password<a class="headerlink" href="#set-password" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">password</span> <span class="o">=</span> <span class="s1">'letmein'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">is_protected</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="remove-password">
|
||||
<h2>Remove password<a class="headerlink" href="#remove-password" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">password</span> <span class="o">=</span> <span class="s1">'letmein'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">is_protected</span><span class="p">)</span>
|
||||
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">unprotect</span><span class="p">(</span><span class="s1">'letmein'</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">is_protected</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="tab-color">
|
||||
<h2>Tab color<a class="headerlink" href="#tab-color" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sheet</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">active_sheet</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">color</span><span class="p">)</span>
|
||||
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">color</span> <span class="o">=</span> <span class="s1">'red'</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">color</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># RGB</span>
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">color</span> <span class="o">=</span> <span class="p">(</span><span class="mi">125</span><span class="p">,</span> <span class="mi">200</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
|
||||
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">sheet</span><span class="o">.</span><span class="n">color</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="document-parent">
|
||||
<h2>Document parent<a class="headerlink" href="#document-parent" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">doc</span> <span class="o">=</span> <span class="n">sheet</span><span class="o">.</span><span class="n">doc</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="activate">
|
||||
<h2>Activate<a class="headerlink" href="#activate" title="Permalink to this headline">¶</a></h2>
|
||||
<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="c1"># Get last sheet</span>
|
||||
<span class="n">sheet</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="c1"># Activate from doc</span>
|
||||
<span class="n">doc</span><span class="o">.</span><span class="n">activate</span><span class="p">(</span><span class="n">sheet</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Activate from sheet</span>
|
||||
<span class="n">sheet</span><span class="o">.</span><span class="n">activate</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="../index.html">ZAZ</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<p class="caption"><span class="caption-text">Contents:</span></p>
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="config.html">Configuration</a></li>
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="easymacro.html">Library easymacro.py</a><ul class="current">
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools_for_debug.html">Tools for debug</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="tools.html">Tools</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="paths.html">Paths and files</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="email.html">Email</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html">Application</a></li>
|
||||
<li class="toctree-l2 current"><a class="reference internal" href="calc.html">Calc</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="writer.html">Writer</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="base.html">Base</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="apendixes.html">Apendixes</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="../index.html">Documentation overview</a><ul>
|
||||
<li><a href="easymacro.html">Library easymacro.py</a><ul>
|
||||
<li><a href="calc.html">Calc</a><ul>
|
||||
<li>Previous: <a href="calc_doc.html" title="previous chapter">Document</a></li>
|
||||
<li>Next: <a href="calc_data.html" title="next chapter">Data</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="searchbox" style="display: none" role="search">
|
||||
<h3 id="searchlabel">Quick search</h3>
|
||||
<div class="searchformwrapper">
|
||||
<form class="search" action="../search.html" method="get">
|
||||
<input type="text" name="q" aria-labelledby="searchlabel" />
|
||||
<input type="submit" value="Go" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2021, Mauricio Baeza.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 4.0.2</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="../_sources/main/calc_sheets.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -136,11 +136,15 @@
|
|||
<li class="toctree-l2"><a class="reference internal" href="application.html#filters">Filters</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html#call-dispatch">Call dispatch</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html#properties">Properties</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="application.html#methods">Methods</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="calc.html">Calc</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc.html#current-doc">Current doc</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc.html#active-sheet">Active sheet</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_doc.html">Document</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_sheets.html">Sheets</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_ranges.html">Cell and ranges</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_ranges2.html">Manipulate ranges</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="calc_data.html">Data</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="writer.html">Writer</a><ul>
|
||||
|
|
Binary file not shown.
File diff suppressed because one or more lines are too long
|
@ -231,8 +231,20 @@ Export
|
|||
filter_name = 'doc'
|
||||
doc.export(path, filter_name)
|
||||
|
||||
path = '/home/mau/myfile.rtf'
|
||||
filter_name = 'rtf'
|
||||
doc.export(path, filter_name)
|
||||
|
||||
* For all support formats look `Apendix`_
|
||||
|
||||
* Export in memory.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.docs.new()
|
||||
filter_name = 'xlsx'
|
||||
excel_doc = doc.export(filter_name=filter_name)
|
||||
|
||||
|
||||
Fonst
|
||||
^^^^^
|
||||
|
@ -395,7 +407,102 @@ name
|
|||
app.msgbox(doc.file_name)
|
||||
|
||||
|
||||
visible
|
||||
~~~~~~~
|
||||
|
||||
* Hide or show document.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
doc.visible = False
|
||||
app.msgbox(doc.visible)
|
||||
doc.visible = True
|
||||
|
||||
|
||||
zoom
|
||||
~~~~
|
||||
|
||||
* Get or set zoom value.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
zoom = doc.zoom
|
||||
app.msgbox(zoom)
|
||||
doc.zoom = zoom * 2
|
||||
app.msgbox(doc.zoom)
|
||||
doc.zoom = zoom
|
||||
|
||||
|
||||
selection
|
||||
~~~~~~~~~
|
||||
|
||||
* **CAUTION**: Selection can be many things.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
selection = doc.selection
|
||||
app.msgbox(selection)
|
||||
|
||||
|
||||
status_bar
|
||||
~~~~~~~~~~
|
||||
|
||||
* Get status bar, always control in other thread.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
@app.run_in_thread
|
||||
def update_status_bar(sb, text, limit):
|
||||
sb.start(text, limit)
|
||||
for i in range(limit):
|
||||
sb.setValue(i)
|
||||
app.sleep(1)
|
||||
# ~ Is important free status bar
|
||||
sb.end()
|
||||
return
|
||||
|
||||
def main():
|
||||
doc = app.active
|
||||
update_status_bar(doc.status_bar, 'Line', 10)
|
||||
return
|
||||
|
||||
|
||||
Methods
|
||||
^^^^^^^
|
||||
|
||||
set_focus
|
||||
~~~~~~~~~
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
name = 'MyDoc.ods'
|
||||
if name in app.docs:
|
||||
doc = app.docs[name]
|
||||
doc.set_focus()
|
||||
|
||||
copy
|
||||
~~~~
|
||||
|
||||
* Copy current selection
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
doc.copy()
|
||||
|
||||
|
||||
paste
|
||||
~~~~~
|
||||
|
||||
* Paste any content in clipboard
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
doc.paste()
|
||||
|
||||
|
||||
.. _dispatch command: https://wiki.documentfoundation.org/Development/DispatchCommands
|
||||
|
|
|
@ -1,27 +1,18 @@
|
|||
|
||||
Calc
|
||||
----
|
||||
|
||||
Remember, always import library.
|
||||
Remember, always import library.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import easymacro as app
|
||||
|
||||
|
||||
Current doc
|
||||
^^^^^^^^^^^
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(doc.type)
|
||||
|
||||
|
||||
Active sheet
|
||||
^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
app.msgbox(sheet.name)
|
||||
calc_doc.rst
|
||||
calc_sheets.rst
|
||||
calc_ranges.rst
|
||||
calc_ranges2.rst
|
||||
calc_data.rst
|
||||
|
|
|
@ -0,0 +1,92 @@
|
|||
|
||||
Data
|
||||
~~~~
|
||||
|
||||
Read
|
||||
^^^^
|
||||
|
||||
* Get value from cell, automatic detect type and get value.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
cell = sheet['A1']
|
||||
|
||||
value = cell.value
|
||||
info = f'Cell Type = {cell.type}\n\nCell Value = {cell.value}'
|
||||
app.msgbox(info)
|
||||
|
||||
* Get date, time and datetime like data Python.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
cell = sheet['A1']
|
||||
app.msgbox(cell.date)
|
||||
app.msgbox(cell.time)
|
||||
app.msgbox(cell.datetime)
|
||||
|
||||
* Get values from cell range.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1:B5']
|
||||
app.msgbox(rango.data)
|
||||
|
||||
* Get formulas
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1:B5']
|
||||
app.msgbox(rango.formula)
|
||||
|
||||
* Get array formula
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['C10:E15']
|
||||
app.msgbox(rango.array_formula)
|
||||
|
||||
* Get like dictionary
|
||||
|
||||
The first row in range are the keys.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1:B5']
|
||||
app.msgbox(rango.dict)
|
||||
|
||||
|
||||
Write
|
||||
^^^^^
|
||||
|
||||
* Automatic detect data type.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
|
||||
# ~ Set int
|
||||
sheet['A1'].value = 1
|
||||
|
||||
# ~ Set float
|
||||
sheet['A2'].value = 10.5
|
||||
|
||||
# ~ Set string
|
||||
sheet['A3'].value = 'Damn World'
|
||||
|
||||
# ~ Set formula
|
||||
sheet['A4'].value = '=RAND()'
|
||||
|
||||
# ~ Set date
|
||||
sheet['A5'].value = app.today()
|
||||
|
||||
# ~ Set time
|
||||
sheet['A6'].value = app.now(True)
|
||||
|
||||
# ~ Set datetime
|
||||
sheet['A7'].value = app.now()
|
|
@ -0,0 +1,50 @@
|
|||
Document
|
||||
~~~~~~~~
|
||||
|
||||
Current doc
|
||||
^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(doc.type)
|
||||
|
||||
|
||||
Selection
|
||||
^^^^^^^^^
|
||||
|
||||
* If selection is range get LOCalcRange, if selection is shape get LOShape, other selection get original pyuno object.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
selection = doc.selection
|
||||
app.msgbox(type(selection))
|
||||
|
||||
|
||||
Headers
|
||||
^^^^^^^
|
||||
|
||||
* Hide or show columns and rows headers.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(doc.headers)
|
||||
doc.headers = not doc.headers
|
||||
app.msgbox(doc.headers)
|
||||
doc.headers = not doc.headers
|
||||
|
||||
|
||||
Tabs
|
||||
^^^^
|
||||
|
||||
* Hide or show tab sheets.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(doc.tabs)
|
||||
doc.tabs = not doc.tabs
|
||||
app.msgbox(doc.tabs)
|
||||
doc.tabs = not doc.tabs
|
|
@ -0,0 +1,190 @@
|
|||
Cell and ranges
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
Cells
|
||||
^^^^^
|
||||
|
||||
* By name
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
cell = sheet['A1']
|
||||
app.msgbox(cell.name)
|
||||
|
||||
|
||||
* By position [row, column]
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
cell = sheet[1, 4]
|
||||
app.msgbox(cell.name)
|
||||
|
||||
|
||||
Ranges
|
||||
^^^^^^
|
||||
|
||||
* By name
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['B2:D5']
|
||||
app.msgbox(rango.name)
|
||||
|
||||
* By position [start_row:end_row, start_column:end_column]
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
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
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
ranges = doc.get_ranges('A1:B1')
|
||||
app.debug(ranges.names)
|
||||
|
||||
* Get columns by name.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['B:B']
|
||||
app.debug(rango.name)
|
||||
|
||||
rango = sheet['D:F']
|
||||
app.debug(rango.name)
|
||||
|
||||
* Get columns by position.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
# Column B
|
||||
rango = sheet[0:,1]
|
||||
app.debug(rango.name)
|
||||
|
||||
# Columnas D:F
|
||||
rango = sheet[0:,3:6]
|
||||
app.debug(rango.name)
|
||||
|
||||
|
||||
* Get rows
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
# One row
|
||||
row = sheet[1]
|
||||
app.debug(row.name)
|
||||
|
||||
# Range rows
|
||||
row = sheet[3:10,0:]
|
||||
app.debug(row.name)
|
||||
|
||||
|
||||
Info ranges
|
||||
^^^^^^^^^^^
|
||||
|
||||
* Get absolute name
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1:E10']
|
||||
app.msgbox(rango.name)
|
||||
|
||||
* Get address
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1']
|
||||
a = rango.address
|
||||
data = f"""Cell Address
|
||||
Row: {a.Row}
|
||||
Column: {a.Column}
|
||||
"""
|
||||
app.msgbox(data)
|
||||
|
||||
rango = sheet['A1:E10']
|
||||
ra = rango.range_address
|
||||
data = (
|
||||
f'Range Address:\n\n'
|
||||
f'Star Row: {ra.StartRow}\n'
|
||||
f'End Row: {ra.EndRow}\n'
|
||||
f'Star Column: {ra.StartColumn}\n'
|
||||
f'End Column: {ra.EndColumn}\n'
|
||||
)
|
||||
app.msgbox(data)
|
||||
|
||||
|
||||
Special ranges
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
* Get used area
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet.used_area
|
||||
app.msgbox(rango.name)
|
||||
|
||||
* Get current region
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
rango = sheet['A1'].current_region
|
||||
app.msgbox(rango.name)
|
||||
|
||||
* Get next free cell
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
cell = sheet['A1'].next_cell
|
||||
app.msgbox(cell.name)
|
||||
|
||||
* Get merged area
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1'].merged_area
|
||||
app.msgbox(rango.name)
|
||||
|
||||
* Get visible cells
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rangos = sheet['A1:E10'].visible
|
||||
for r in rangos:
|
||||
app.debug(r.name)
|
||||
|
||||
* Get empty cells
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rangos = sheet['A1:E10'].empty
|
||||
for r in rangos:
|
||||
app.debug(r.name)
|
|
@ -0,0 +1,124 @@
|
|||
Manipulate ranges
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
**Not, not is necesary select range for manipulate**
|
||||
|
||||
Select
|
||||
^^^^^^
|
||||
|
||||
* Select from doc
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
sheet = app.active_sheet
|
||||
|
||||
cell = sheet['A1']
|
||||
doc.select(cell)
|
||||
|
||||
|
||||
* Select in self range
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1:C5']
|
||||
rango.select()
|
||||
|
||||
|
||||
Move
|
||||
^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1:C5']
|
||||
rango.move(sheet['E6'])
|
||||
|
||||
* Move to other sheet
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
rango.move(doc[-1]['E6'])
|
||||
|
||||
|
||||
Insert
|
||||
^^^^^^
|
||||
|
||||
* Default insert down
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1:C1']
|
||||
rango.insert()
|
||||
|
||||
* Insert and move right
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
rango.insert(app.CellInsertMode.RIGHT)
|
||||
|
||||
* Insert entire rows
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
rango.insert(app.CellInsertMode.ROWS)
|
||||
|
||||
* Insert entire columns
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
rango.insert(app.CellInsertMode.COLUMNS)
|
||||
|
||||
|
||||
Delete
|
||||
^^^^^^
|
||||
|
||||
* Default move up
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1:C1']
|
||||
rango.delete()
|
||||
|
||||
* Delete and move left
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
rango.delete(app.CellDeleteMode.LEFT)
|
||||
|
||||
* Delete entire rows
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
rango.delete(app.CellDeleteMode.ROWS)
|
||||
|
||||
* Delete entire columns
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
rango.delete(app.CellDeleteMode.COLUMNS)
|
||||
|
||||
|
||||
Copy
|
||||
^^^^
|
||||
|
||||
* Using native method `copyRange`, current range always should be a cell and source should be a range.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
cell = sheet['A5']
|
||||
source = sheet['D1:E4']
|
||||
cell.copy_from(source)
|
||||
|
||||
* From range to cell
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
rango = sheet['A1:C5']
|
||||
target = sheet['E1']
|
||||
rango.copy_to(target)
|
|
@ -0,0 +1,332 @@
|
|||
Sheets
|
||||
~~~~~~
|
||||
|
||||
Active sheet
|
||||
^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
app.msgbox(sheet.name)
|
||||
|
||||
# or
|
||||
doc = app.active
|
||||
sheet = doc.active
|
||||
|
||||
|
||||
Get by index
|
||||
^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
sheet = doc[0]
|
||||
app.msgbox(sheet.name)
|
||||
|
||||
|
||||
Get by name
|
||||
^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
sheet = doc['Sheet1']
|
||||
app.msgbox(sheet.name)
|
||||
|
||||
|
||||
Contains
|
||||
^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox('Sheet1' in doc)
|
||||
|
||||
|
||||
Get tuple with all names
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(doc.names)
|
||||
|
||||
|
||||
Count
|
||||
^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
app.msgbox(len(doc))
|
||||
|
||||
New
|
||||
^^^
|
||||
|
||||
* Always validate if new name not exists.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
|
||||
sheet = doc.new_sheet()
|
||||
# CAUTION: If 'NewSheet' exists, reset it to clean sheet.
|
||||
doc['NewSheet'] = sheet
|
||||
|
||||
# ~ or
|
||||
|
||||
sheet = doc.insert('NewSheet2')
|
||||
|
||||
* Insert multiple, get last insert.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
names = ('One', 'Two', 'Three')
|
||||
sheet = doc.insert(names)
|
||||
|
||||
|
||||
Move
|
||||
^^^^
|
||||
|
||||
* Move by object to last position.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = doc[0]
|
||||
doc.move(sheet)
|
||||
|
||||
* Move by name to last position.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc.move('Sheet1')
|
||||
|
||||
* Move to position.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = doc[0]
|
||||
doc.move(sheet, 2)
|
||||
|
||||
* Move from sheet
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
sheet.move()
|
||||
|
||||
* Move to position.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
sheet.move(2)
|
||||
|
||||
|
||||
Remove
|
||||
^^^^^^
|
||||
|
||||
* Remove by object.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = doc[0]
|
||||
doc.remove(sheet)
|
||||
|
||||
* Remove by name.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc.remove('One')
|
||||
|
||||
* Remove from sheet.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
sheet.remove()
|
||||
|
||||
|
||||
Copy
|
||||
^^^^
|
||||
|
||||
* Copy inside the same spreadsheet.
|
||||
|
||||
* By object
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = doc[0]
|
||||
doc.copy_sheet(sheet, 'OtherSheet')
|
||||
|
||||
* By name
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc.copy_sheet('Sheet1', 'Sheet2')
|
||||
|
||||
* From sheet
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
sheet.copy(sheet.name + '_2')
|
||||
|
||||
|
||||
Copy from
|
||||
^^^^^^^^^
|
||||
|
||||
* Copy sheet from one spreadsheet to other.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
doc_source = app.docs['Contacts.ods']
|
||||
name_source = 'Names'
|
||||
name_target = 'Names'
|
||||
position = 0
|
||||
doc.copy_from(doc_source, name_source, name_target, position)
|
||||
|
||||
|
||||
Copy to
|
||||
^^^^^^^
|
||||
|
||||
* Copy from sheet with the same name
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.docs.new()
|
||||
sheet = app.active_sheet
|
||||
sheet.copy_to(doc)
|
||||
|
||||
* Used new name
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.docs.new()
|
||||
sheet = app.active_sheet
|
||||
sheet.copy_to(doc, 'NewName')
|
||||
|
||||
|
||||
Sort
|
||||
^^^^
|
||||
|
||||
* Sort sheets by names.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
doc.sort()
|
||||
|
||||
Name
|
||||
^^^^
|
||||
|
||||
* Name visible by the user.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
app.msgbox(sheet.name)
|
||||
sheet.name = 'NewName'
|
||||
app.msgbox(sheet.name)
|
||||
|
||||
|
||||
Code name
|
||||
^^^^^^^^^
|
||||
|
||||
* Name only accessible by code.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
app.msgbox(sheet.code_name)
|
||||
sheet.code_name = 'my_name'
|
||||
app.msgbox(sheet.code_name)
|
||||
|
||||
|
||||
Visible
|
||||
^^^^^^^
|
||||
|
||||
* Apply only with spreadsheet with two or more sheets.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
app.msgbox(sheet.visible)
|
||||
sheet.visible = not sheet.visible
|
||||
app.msgbox(sheet.visible)
|
||||
sheet.visible = not sheet.visible
|
||||
|
||||
|
||||
Is protected
|
||||
^^^^^^^^^^^^
|
||||
|
||||
* If sheet is protected with password.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
app.msgbox(sheet.is_protected)
|
||||
|
||||
|
||||
Set password
|
||||
^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
sheet.password = 'letmein'
|
||||
app.msgbox(sheet.is_protected)
|
||||
|
||||
|
||||
Remove password
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
sheet.password = 'letmein'
|
||||
app.msgbox(sheet.is_protected)
|
||||
|
||||
sheet.unprotect('letmein')
|
||||
app.msgbox(sheet.is_protected)
|
||||
|
||||
|
||||
Tab color
|
||||
^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
sheet = app.active_sheet
|
||||
app.msgbox(sheet.color)
|
||||
|
||||
sheet.color = 'red'
|
||||
app.msgbox(sheet.color)
|
||||
|
||||
# RGB
|
||||
sheet.color = (125, 200, 10)
|
||||
app.msgbox(sheet.color)
|
||||
|
||||
|
||||
Document parent
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = sheet.doc
|
||||
|
||||
|
||||
Activate
|
||||
^^^^^^^^
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
doc = app.active
|
||||
# Get last sheet
|
||||
sheet = doc[-1]
|
||||
|
||||
# Activate from doc
|
||||
doc.activate(sheet)
|
||||
|
||||
# Activate from sheet
|
||||
sheet.activate()
|
|
@ -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()
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
|
||||
For Writer
|
||||
-------------------
|
||||
----------
|
||||
|
||||
Set autostyle in table
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
|
@ -12,3 +12,13 @@ Set autostyle in table
|
|||
table = doc.tables[0]
|
||||
table.style = 'Academic'
|
||||
return
|
||||
|
||||
|
||||
Insert math formula
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
formula = '%LAMBDA_{deg","t}=1 + %alpha_deg SQRT {M_t over M_{(t=0)}-1}~"."'
|
||||
text = app.selection
|
||||
text.insert_math(formula)
|
||||
|
|
|
@ -83,7 +83,6 @@ from com.sun.star.table.CellContentType import EMPTY, VALUE, TEXT, FORMULA
|
|||
from com.sun.star.util import Time, Date, DateTime
|
||||
|
||||
from com.sun.star.text.ControlCharacter import PARAGRAPH_BREAK
|
||||
from com.sun.star.text.TextContentAnchorType import AS_CHARACTER
|
||||
|
||||
from com.sun.star.lang import Locale
|
||||
from com.sun.star.lang import XEventListener
|
||||
|
@ -163,15 +162,25 @@ TYPE_DOC = {
|
|||
OBJ_CELL = 'ScCellObj'
|
||||
OBJ_RANGE = 'ScCellRangeObj'
|
||||
OBJ_RANGES = 'ScCellRangesObj'
|
||||
TYPE_RANGES = (OBJ_CELL, OBJ_RANGE, OBJ_RANGES)
|
||||
TYPE_RANGES = (OBJ_CELL, OBJ_RANGE)
|
||||
|
||||
OBJ_SHAPES = 'com.sun.star.drawing.SvxShapeCollection'
|
||||
OBJ_SHAPE = 'com.sun.star.comp.sc.ScShapeObj'
|
||||
OBJ_SHAPES = 'com.sun.star.drawing.SvxShapeCollection'
|
||||
OBJ_GRAPHIC = 'SwXTextGraphicObject'
|
||||
|
||||
OBJ_TEXTS = 'SwXTextRanges'
|
||||
OBJ_TEXT = 'SwXTextRange'
|
||||
|
||||
CLSID = {
|
||||
'FORMULA': '078B7ABA-54FC-457F-8551-6147e776a997',
|
||||
}
|
||||
|
||||
SERVICES = {
|
||||
'TEXT_EMBEDDED': 'com.sun.star.text.TextEmbeddedObject',
|
||||
'TEXT_TABLE': 'com.sun.star.text.TextTable',
|
||||
'GRAPHIC': 'com.sun.star.text.GraphicObject',
|
||||
}
|
||||
|
||||
|
||||
# ~ from com.sun.star.sheet.FilterOperator import EMPTY, NO_EMPTY, EQUAL, NOT_EQUAL
|
||||
class FilterOperator(IntEnum):
|
||||
|
@ -215,6 +224,27 @@ class DataPilotFieldOrientation():
|
|||
DPFO = DataPilotFieldOrientation
|
||||
|
||||
|
||||
class CellInsertMode():
|
||||
from com.sun.star.sheet.CellInsertMode import DOWN, RIGHT, ROWS, COLUMNS
|
||||
CIM = CellInsertMode
|
||||
|
||||
|
||||
class CellDeleteMode():
|
||||
from com.sun.star.sheet.CellDeleteMode import UP, LEFT, ROWS, COLUMNS
|
||||
CDM = CellDeleteMode
|
||||
|
||||
|
||||
class FormButtonType():
|
||||
from com.sun.star.form.FormButtonType import PUSH, SUBMIT, RESET, URL
|
||||
FBT = FormButtonType
|
||||
|
||||
|
||||
class TextContentAnchorType():
|
||||
from com.sun.star.text.TextContentAnchorType \
|
||||
import AT_PARAGRAPH, AS_CHARACTER, AT_PAGE, AT_FRAME, AT_CHARACTER
|
||||
TCAT = TextContentAnchorType
|
||||
|
||||
|
||||
OS = platform.system()
|
||||
IS_WIN = OS == 'Windows'
|
||||
IS_MAC = OS == 'Darwin'
|
||||
|
@ -700,7 +730,8 @@ def sha512(data):
|
|||
def get_config(key='', prefix='conf', default={}):
|
||||
name_file = FILE_NAME_CONFIG.format(prefix)
|
||||
values = None
|
||||
path = _P.join(_P.config('UserConfig'), name_file)
|
||||
# ~ path = _P.join(_P.config('UserConfig'), name_file)
|
||||
path = _P.join(_P.user_config, name_file)
|
||||
if not _P.exists(path):
|
||||
return default
|
||||
|
||||
|
@ -713,7 +744,8 @@ def get_config(key='', prefix='conf', default={}):
|
|||
|
||||
def set_config(key, value, prefix='conf'):
|
||||
name_file = FILE_NAME_CONFIG.format(prefix)
|
||||
path = _P.join(_P.config('UserConfig'), name_file)
|
||||
# ~ path = _P.join(_P.config('UserConfig'), name_file)
|
||||
path = _P.join(_P.user_config, name_file)
|
||||
values = get_config(default={}, prefix=prefix)
|
||||
values[key] = value
|
||||
result = _P.to_json(path, values)
|
||||
|
@ -1121,10 +1153,6 @@ class LODocument(object):
|
|||
def name(self):
|
||||
return _P(self.path).name
|
||||
|
||||
@property
|
||||
def status_bar(self):
|
||||
return self._cc.getStatusIndicator()
|
||||
|
||||
@property
|
||||
def visible(self):
|
||||
w = self.frame.ContainerWindow
|
||||
|
@ -1163,7 +1191,6 @@ class LODocument(object):
|
|||
@property
|
||||
def selection(self):
|
||||
sel = self.obj.CurrentSelection
|
||||
# ~ return _get_class_uno(sel)
|
||||
return sel
|
||||
|
||||
@property
|
||||
|
@ -1171,6 +1198,11 @@ class LODocument(object):
|
|||
taf = create_instance('com.sun.star.sheet.TableAutoFormats')
|
||||
return taf.ElementNames
|
||||
|
||||
@property
|
||||
def status_bar(self):
|
||||
bar = self._cc.getStatusIndicator()
|
||||
return bar
|
||||
|
||||
def create_instance(self, name):
|
||||
obj = self.obj.createInstance(name)
|
||||
return obj
|
||||
|
@ -1195,14 +1227,15 @@ class LODocument(object):
|
|||
# ~ return self.obj.getCurrentSelection()
|
||||
return
|
||||
|
||||
def select(self, obj):
|
||||
self._cc.select(obj)
|
||||
return
|
||||
# ~ def select(self, obj):
|
||||
# ~ self._cc.select(obj)
|
||||
# ~ return
|
||||
|
||||
def to_pdf(self, path: str='', args: dict={}):
|
||||
def to_pdf(self, path: str='', options: dict={}):
|
||||
"""
|
||||
https://wiki.documentfoundation.org/Macros/Python_Guide/PDF_export_filter_data
|
||||
"""
|
||||
args = options.copy()
|
||||
stream = None
|
||||
path_pdf = 'private:stream'
|
||||
if path:
|
||||
|
@ -1229,40 +1262,56 @@ class LODocument(object):
|
|||
|
||||
return stream
|
||||
|
||||
def export(self, path: str, filter_name: str, args: dict={}):
|
||||
def export(self, path: str='', filter_name: str='', options: dict={}):
|
||||
FILTERS = {
|
||||
'xlsx': 'Calc MS Excel 2007 XML',
|
||||
'xls': 'MS Excel 97',
|
||||
'docx': 'MS Word 2007 XML',
|
||||
'doc': 'MS Word 97',
|
||||
'rtf': 'Rich Text Format',
|
||||
}
|
||||
args = options.copy()
|
||||
stream = None
|
||||
path_target = 'private:stream'
|
||||
if path:
|
||||
path_target = _P.to_url(path)
|
||||
|
||||
filter_name = FILTERS.get(filter_name, filter_name)
|
||||
filter_data = dict_to_property(args, True)
|
||||
args = {
|
||||
'FilterName': filter_name,
|
||||
'FilterData': filter_data,
|
||||
}
|
||||
if not path:
|
||||
stream = IOStream.output()
|
||||
args['OutputStream'] = stream
|
||||
|
||||
opt = dict_to_property(args)
|
||||
try:
|
||||
self.obj.storeToURL(_P.to_url(path), opt)
|
||||
self.obj.storeToURL(path_target, opt)
|
||||
except Exception as e:
|
||||
error(e)
|
||||
path = ''
|
||||
|
||||
return _P.exists(path)
|
||||
if not stream is None:
|
||||
stream = stream.buffer
|
||||
|
||||
def save(self, path: str='', args: dict={}) -> bool:
|
||||
result = True
|
||||
opt = dict_to_property(args)
|
||||
if path:
|
||||
try:
|
||||
self.obj.storeAsURL(_P.to_url(path), opt)
|
||||
except Exception as e:
|
||||
error(e)
|
||||
result = False
|
||||
else:
|
||||
return stream
|
||||
|
||||
def save(self, path: str='', options: dict={}):
|
||||
if not path:
|
||||
self.obj.store()
|
||||
return result
|
||||
return
|
||||
|
||||
args = options.copy()
|
||||
path_target = _P.to_url(path)
|
||||
|
||||
opt = dict_to_property(args)
|
||||
try:
|
||||
self.obj.storeAsURL(path_target, opt)
|
||||
except Exception as e:
|
||||
error(e)
|
||||
|
||||
return
|
||||
|
||||
def close(self):
|
||||
self.obj.close(True)
|
||||
|
@ -1356,10 +1405,11 @@ class LOCalc(LODocument):
|
|||
sel = self.obj.CurrentSelection
|
||||
if sel.ImplementationName in TYPE_RANGES:
|
||||
sel = LOCalcRange(sel)
|
||||
elif sel.ImplementationName in OBJ_RANGES:
|
||||
sel = LOCalcRanges(sel)
|
||||
elif sel.ImplementationName == OBJ_SHAPES:
|
||||
if len(sel) == 1:
|
||||
sel = sel[0]
|
||||
sel = LODrawPage(sel.Parent)[sel.Name]
|
||||
sel = LOShape(sel[0])
|
||||
else:
|
||||
debug(sel.ImplementationName)
|
||||
return sel
|
||||
|
@ -1395,6 +1445,16 @@ class LOCalc(LODocument):
|
|||
# ~ return LOCalcDataBaseRanges(self.obj.DataBaseRanges)
|
||||
return self.obj.DatabaseRanges
|
||||
|
||||
@property
|
||||
def ranges(self):
|
||||
obj = self.create_instance('com.sun.star.sheet.SheetCellRanges')
|
||||
return LOCalcRanges(obj)
|
||||
|
||||
def get_ranges(self, address: str):
|
||||
ranges = self.ranges
|
||||
ranges.add([sheet[address] for sheet in self])
|
||||
return ranges
|
||||
|
||||
def activate(self, sheet):
|
||||
obj = sheet
|
||||
if isinstance(sheet, LOCalcSheet):
|
||||
|
@ -1431,7 +1491,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
|
||||
|
@ -1474,6 +1534,10 @@ class LOCalc(LODocument):
|
|||
sheet = self.active
|
||||
return sheet.render(data, clean=clean)
|
||||
|
||||
def select(self, rango):
|
||||
self._cc.select(rango.obj)
|
||||
return
|
||||
|
||||
|
||||
class LOChart(object):
|
||||
|
||||
|
@ -1708,7 +1772,8 @@ class LOSheetTables(object):
|
|||
return
|
||||
|
||||
|
||||
class LOFormControl(LOBaseObject):
|
||||
# ~ class LOFormControl(LOBaseObject):
|
||||
class LOFormControl():
|
||||
EVENTS = {
|
||||
'action': 'actionPerformed',
|
||||
'click': 'mousePressed',
|
||||
|
@ -1719,21 +1784,25 @@ class LOFormControl(LOBaseObject):
|
|||
}
|
||||
|
||||
def __init__(self, obj, view, form):
|
||||
super().__init__(obj)
|
||||
self._obj = obj
|
||||
self._view = view
|
||||
self._form = form
|
||||
self._m = view.Model
|
||||
self._index = -1
|
||||
|
||||
def __setattr__(self, name, value):
|
||||
if name in ('_form', '_view', '_m', '_index'):
|
||||
self.__dict__[name] = value
|
||||
else:
|
||||
super().__setattr__(name, value)
|
||||
# ~ def __setattr__(self, name, value):
|
||||
# ~ if name in ('_form', '_view', '_m', '_index'):
|
||||
# ~ self.__dict__[name] = value
|
||||
# ~ else:
|
||||
# ~ super().__setattr__(name, value)
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.name} ({self.type}) {[self.index]}'
|
||||
|
||||
@property
|
||||
def obj(self):
|
||||
return self._obj
|
||||
|
||||
@property
|
||||
def form(self):
|
||||
return self._form
|
||||
|
@ -1770,6 +1839,30 @@ class LOFormControl(LOBaseObject):
|
|||
def enabled(self, value):
|
||||
self._m.Enabled = value
|
||||
|
||||
@property
|
||||
def anchor(self):
|
||||
return self.obj.Anchor
|
||||
@anchor.setter
|
||||
def anchor(self, value):
|
||||
size = None
|
||||
if hasattr(value, 'obj'):
|
||||
size = getattr(value, 'size', None)
|
||||
value = value.obj
|
||||
self.obj.Anchor = value
|
||||
if not size is None:
|
||||
self.size = size
|
||||
try:
|
||||
self.obj.ResizeWithCell = True
|
||||
except:
|
||||
pass
|
||||
|
||||
@property
|
||||
def size(self):
|
||||
return self.obj.Size
|
||||
@size.setter
|
||||
def size(self, value):
|
||||
self.obj.Size = value
|
||||
|
||||
@property
|
||||
def events(self):
|
||||
return self.form.getScriptEvents(self.index)
|
||||
|
@ -1849,6 +1942,14 @@ class LOFormControlButton(LOFormControl):
|
|||
def value(self, value):
|
||||
self._m.Text = Label
|
||||
|
||||
@property
|
||||
def url(self):
|
||||
return self._m.TargetURL
|
||||
@url.setter
|
||||
def url(self, value):
|
||||
self._m.TargetURL = value
|
||||
self._m.ButtonType = FormButtonType.URL
|
||||
|
||||
|
||||
FORM_CONTROL_CLASS = {
|
||||
'label': LOFormControlLabel,
|
||||
|
@ -1899,7 +2000,7 @@ class LOForm(object):
|
|||
name = control.Name
|
||||
tipo = types[control.ImplementationName]
|
||||
view = self.doc.CurrentController.getControl(control)
|
||||
control = FORM_CONTROL_CLASS[tipo](control, view)
|
||||
control = FORM_CONTROL_CLASS[tipo](control, view, self._obj)
|
||||
control.index = i
|
||||
setattr(self, name, control)
|
||||
self._controls[name] = control
|
||||
|
@ -1952,8 +2053,8 @@ class LOForm(object):
|
|||
def add(self, args):
|
||||
name = args['Name']
|
||||
tipo = args.pop('Type').lower()
|
||||
w = args.pop('Width')
|
||||
h = args.pop('Height')
|
||||
w = args.pop('Width', 1000)
|
||||
h = args.pop('Height', 200)
|
||||
x = args.pop('X', 0)
|
||||
y = args.pop('Y', 0)
|
||||
control = self.doc.createInstance('com.sun.star.drawing.ControlShape')
|
||||
|
@ -2011,7 +2112,9 @@ class LOSheetForms(object):
|
|||
def names(self):
|
||||
return self.obj.ElementNames
|
||||
|
||||
def insert(self, name):
|
||||
def insert(self, name=''):
|
||||
if not name:
|
||||
name = f'form{self.count + 1}'
|
||||
form = self.doc.createInstance('com.sun.star.form.component.Form')
|
||||
self.obj.insertByName(name, form)
|
||||
return LOForm(form, self._dp)
|
||||
|
@ -2278,6 +2381,7 @@ class LOCalcSheet(object):
|
|||
self.doc.activate(self.obj)
|
||||
return
|
||||
|
||||
# ~ ???
|
||||
def clean(self):
|
||||
doc = self.doc
|
||||
sheet = doc.create_instance('com.sun.star.sheet.Spreadsheet')
|
||||
|
@ -2306,12 +2410,10 @@ class LOCalcSheet(object):
|
|||
index = pos
|
||||
if pos < 0:
|
||||
index = len(doc)
|
||||
name = self.name
|
||||
if not target:
|
||||
new_name = name
|
||||
|
||||
doc._sheets.importSheet(self.doc.obj, name, index)
|
||||
sheet = doc[name]
|
||||
new_name = target or self.name
|
||||
new_pos = doc._sheets.importSheet(self.doc.obj, self.name, index)
|
||||
sheet = doc[new_pos]
|
||||
sheet.name = new_name
|
||||
return sheet
|
||||
|
||||
|
@ -2446,6 +2548,10 @@ class LOCalcRange(object):
|
|||
def type(self):
|
||||
return self.obj.Type
|
||||
|
||||
@property
|
||||
def error(self):
|
||||
return self.obj.getError()
|
||||
|
||||
@property
|
||||
def value(self):
|
||||
v = None
|
||||
|
@ -2459,10 +2565,8 @@ class LOCalcRange(object):
|
|||
@value.setter
|
||||
def value(self, data):
|
||||
if isinstance(data, str):
|
||||
# ~ print(isinstance(data, str), data[0])
|
||||
if data[0] in '=':
|
||||
self.obj.setFormula(data)
|
||||
# ~ print('Set Formula')
|
||||
else:
|
||||
self.obj.setString(data)
|
||||
elif isinstance(data, Decimal):
|
||||
|
@ -2581,8 +2685,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):
|
||||
|
@ -2641,7 +2745,7 @@ class LOCalcRange(object):
|
|||
self.obj.Validation = current
|
||||
|
||||
def select(self):
|
||||
self.doc.select(self.obj)
|
||||
self.doc._cc.select(self.obj)
|
||||
return
|
||||
|
||||
def search(self, options, find_all=True):
|
||||
|
@ -2701,32 +2805,51 @@ class LOCalcRange(object):
|
|||
cursor.collapseToSize(cols, rows)
|
||||
return LOCalcRange(self.sheet[cursor.AbsoluteName].obj)
|
||||
|
||||
def copy(self, source):
|
||||
def move(self, target):
|
||||
sheet = self.sheet.obj
|
||||
sheet.moveRange(target.address, self.range_address)
|
||||
return
|
||||
|
||||
def insert(self, insert_mode=CIM.DOWN):
|
||||
sheet = self.sheet.obj
|
||||
sheet.insertCells(self.range_address, insert_mode)
|
||||
return
|
||||
|
||||
def delete(self, delete_mode=CDM.UP):
|
||||
sheet = self.sheet.obj
|
||||
sheet.removeRange(self.range_address, delete_mode)
|
||||
return
|
||||
|
||||
def copy_from(self, source):
|
||||
self.sheet.obj.copyRange(self.address, source.range_address)
|
||||
return
|
||||
|
||||
def copy_to(self, cell, formula=False):
|
||||
rango = cell.to_size(self.rows, self.columns)
|
||||
if formula:
|
||||
rango.formula = self.data
|
||||
else:
|
||||
rango.data = self.data
|
||||
def copy_to(self, target):
|
||||
self.sheet.obj.copyRange(target.address, self.range_address)
|
||||
return
|
||||
|
||||
def copy_from(self, rango, formula=False):
|
||||
data = rango
|
||||
if isinstance(rango, LOCalcRange):
|
||||
if formula:
|
||||
data = rango.formula
|
||||
else:
|
||||
data = rango.data
|
||||
rows = len(data)
|
||||
cols = len(data[0])
|
||||
if formula:
|
||||
self.to_size(rows, cols).formula = data
|
||||
else:
|
||||
self.to_size(rows, cols).data = data
|
||||
return
|
||||
# ~ def copy_to(self, cell, formula=False):
|
||||
# ~ rango = cell.to_size(self.rows, self.columns)
|
||||
# ~ if formula:
|
||||
# ~ rango.formula = self.formula
|
||||
# ~ else:
|
||||
# ~ rango.data = self.data
|
||||
# ~ return
|
||||
|
||||
# ~ def copy_from(self, rango, formula=False):
|
||||
# ~ data = rango
|
||||
# ~ if isinstance(rango, LOCalcRange):
|
||||
# ~ if formula:
|
||||
# ~ data = rango.formula
|
||||
# ~ else:
|
||||
# ~ data = rango.data
|
||||
# ~ rows = len(data)
|
||||
# ~ cols = len(data[0])
|
||||
# ~ if formula:
|
||||
# ~ self.to_size(rows, cols).formula = data
|
||||
# ~ else:
|
||||
# ~ self.to_size(rows, cols).data = data
|
||||
# ~ return
|
||||
|
||||
def optimal_width(self):
|
||||
self.obj.Columns.OptimalWidth = True
|
||||
|
@ -2933,6 +3056,87 @@ class LOCalcRange(object):
|
|||
return values
|
||||
|
||||
|
||||
class LOCalcRanges(object):
|
||||
|
||||
def __init__(self, obj):
|
||||
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
|
||||
|
||||
def __exit__(self, exc_type, exc_value, traceback):
|
||||
pass
|
||||
|
||||
def __len__(self):
|
||||
return self._obj.Count
|
||||
|
||||
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
|
||||
|
||||
@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)
|
||||
return
|
||||
|
||||
def remove(self, rangos):
|
||||
if isinstance(rangos, LOCalcRange):
|
||||
rangos = (rangos,)
|
||||
for r in rangos:
|
||||
del self._ranges[r.name]
|
||||
self.obj.removeRangeAddress(r.range_address)
|
||||
return
|
||||
|
||||
|
||||
class LOWriterStyles(object):
|
||||
|
||||
def __init__(self, styles):
|
||||
|
@ -3113,6 +3317,17 @@ class LOWriterTextRange(object):
|
|||
self.text.insertTextContent(cursor, data, replace)
|
||||
return
|
||||
|
||||
def insert_math(self, formula,
|
||||
anchor_type=TextContentAnchorType.AS_CHARACTER,
|
||||
cursor=None, replace=False):
|
||||
|
||||
math = self._doc.create_instance(SERVICES['TEXT_EMBEDDED'])
|
||||
math.CLSID = CLSID['FORMULA']
|
||||
math.AnchorType = anchor_type
|
||||
self.insert_content(math, cursor, replace)
|
||||
math.EmbeddedObject.Component.Formula = formula
|
||||
return math
|
||||
|
||||
def new_line(self, count=1):
|
||||
cursor = self.cursor
|
||||
for i in range(count):
|
||||
|
@ -3120,7 +3335,7 @@ class LOWriterTextRange(object):
|
|||
return self._doc.selection
|
||||
|
||||
def insert_table(self, data):
|
||||
table = self._doc.create_instance('com.sun.star.text.TextTable')
|
||||
table = self._doc.create_instance(SERVICES['TEXT_TABLE'])
|
||||
rows = len(data)
|
||||
cols = len(data[0])
|
||||
table.initialize(rows, cols)
|
||||
|
@ -3133,9 +3348,10 @@ class LOWriterTextRange(object):
|
|||
def insert_image(self, path, args={}):
|
||||
w = args.get('Width', 1000)
|
||||
h = args.get('Height', 1000)
|
||||
image = self._doc.create_instance('com.sun.star.text.GraphicObject')
|
||||
|
||||
image = self._doc.create_instance(SERVICES['GRAPHIC'])
|
||||
image.GraphicURL = _P.to_url(path)
|
||||
image.AnchorType = AS_CHARACTER
|
||||
image.AnchorType = TextContentAnchorType.AS_CHARACTER
|
||||
image.Width = w
|
||||
image.Height = h
|
||||
self.insert_content(image)
|
||||
|
@ -3353,7 +3569,7 @@ class LOWriter(LODocument):
|
|||
class LOShape(LOBaseObject):
|
||||
IMAGE = 'com.sun.star.drawing.GraphicObjectShape'
|
||||
|
||||
def __init__(self, obj, index):
|
||||
def __init__(self, obj, index=-1):
|
||||
self._index = index
|
||||
super().__init__(obj)
|
||||
|
||||
|
@ -6140,6 +6356,7 @@ class LODBServer(object):
|
|||
self._conn = None
|
||||
self._error = 'Not connected'
|
||||
self._type = ''
|
||||
self._drivers = []
|
||||
|
||||
def __str__(self):
|
||||
return f'DB type {self._type}'
|
||||
|
@ -6158,13 +6375,19 @@ class LODBServer(object):
|
|||
def error(self):
|
||||
return self._error
|
||||
|
||||
@property
|
||||
def drivers(self):
|
||||
return self._drivers
|
||||
|
||||
def disconnet(self):
|
||||
if not self._conn is None:
|
||||
if not self._conn.isClosed():
|
||||
self._conn.close()
|
||||
self._conn.dispose()
|
||||
return
|
||||
|
||||
def connect(self, args):
|
||||
def connect(self, options={}):
|
||||
args = options.copy()
|
||||
self._error = ''
|
||||
self._type = args.get('type', 'postgres')
|
||||
driver = self.DRIVERS[self._type]
|
||||
|
@ -6175,9 +6398,15 @@ class LODBServer(object):
|
|||
password = args['password']
|
||||
|
||||
data = {'user': user, 'password': password}
|
||||
url = f'sdbc:{driver}://{server}:{port}/{dbname}'
|
||||
url = f'sdbc:{driver}:{server}:{port}/{dbname}'
|
||||
|
||||
# ~ https://downloads.mariadb.com/Connectors/java/
|
||||
# ~ data['JavaDriverClass'] = 'org.mariadb.jdbc.Driver'
|
||||
# ~ url = f'jdbc:mysql://{server}:{port}/{dbname}'
|
||||
|
||||
args = dict_to_property(data)
|
||||
manager = create_instance('com.sun.star.sdbc.DriverManager')
|
||||
self._drivers = [d.ImplementationName for d in manager]
|
||||
|
||||
try:
|
||||
self._conn = manager.getConnectionWithInfo(url, args)
|
||||
|
@ -6187,6 +6416,18 @@ class LODBServer(object):
|
|||
|
||||
return self
|
||||
|
||||
def execute(self, sql):
|
||||
query = self._conn.createStatement()
|
||||
try:
|
||||
query.execute(sql)
|
||||
result = True
|
||||
except Exception as e:
|
||||
error(e)
|
||||
self._error = str(e)
|
||||
result = False
|
||||
|
||||
return result
|
||||
|
||||
|
||||
def create_window(args):
|
||||
return LOWindow(args)
|
||||
|
@ -6306,6 +6547,17 @@ class Paths(object):
|
|||
path = sys.executable
|
||||
return path
|
||||
|
||||
@classproperty
|
||||
def user_profile(self):
|
||||
path = self.config('UserConfig')
|
||||
path = str(Path(path).parent)
|
||||
return path
|
||||
|
||||
@classproperty
|
||||
def user_config(self):
|
||||
path = self.config('UserConfig')
|
||||
return path
|
||||
|
||||
@classmethod
|
||||
def dir_tmp(self, only_name=False):
|
||||
dt = tempfile.TemporaryDirectory()
|
||||
|
@ -6657,6 +6909,20 @@ class Dates(object):
|
|||
d = datetime.date(year, month, day)
|
||||
return d
|
||||
|
||||
@classmethod
|
||||
def str_to_date(cls, str_date, template, to_calc=False):
|
||||
d = datetime.datetime.strptime(str_date, template).date()
|
||||
if to_calc:
|
||||
d = d.toordinal() - DATE_OFFSET
|
||||
return d
|
||||
|
||||
@classmethod
|
||||
def calc_to_date(cls, value, frm=''):
|
||||
d = datetime.date.fromordinal(int(value) + DATE_OFFSET)
|
||||
if frm:
|
||||
d = d.strftime(frm)
|
||||
return d
|
||||
|
||||
|
||||
class OutputStream(unohelper.Base, XOutputStream):
|
||||
|
||||
|
|
Loading…
Reference in New Issue