Seite 1 von 1

Libre Office calc lesen und schreiben

Verfasst: Montag 11. November 2013, 01:55
von Ikarus
Hallo liebe Python Freunde :)

Ich habe eine Libre Office calc Datei die ich fertig gestaltet habe.

Ich möchte diese Datei, nennen wir sie Test.odt, mit python bearbeiten.
Also die Zelle A1 lesen und in der Zelle B5 ein "hello world" schreiben.

Kann mir einer sagen wie ich das machen kann, vielleicht mit einem simplen Beispiel.

Vielen Dank

Re: Libre Office calc lesen und schreiben

Verfasst: Montag 11. November 2013, 09:37
von karolus
Hallo

Das kannst du aus dem Script-kontext aus LO heraus lösen, Beispiele: http://de.openoffice.info/search.php?keywords=python
Dabei must du vor allem lernen mit der LO.API klarzukommen, hilfreich dabei ist die Erweiterung Mri die generiert dir sogar halbwegs brauchbaren Code beim Inspizieren der Objekte.

Unabhängig von LO gehts auch, schau dir dazu mal https://pypi.python.org/pypi/odfpy an.

Karolus

Re: Libre Office calc lesen und schreiben

Verfasst: Montag 11. November 2013, 16:44
von Ikarus
Danke für deine Antwort karolus :)

Ich habe mir UNO etwas angesehen
http://www.openoffice.org/de/doc/entwic ... uecke.html

leider finde ich kein Beispiel wo eine existierende odt Datei in python importiert wird und dann diese
editiert wird.
Ein einfach Beispiel dieser Art wo man dann noch Zellen lesen und schreiben kann würde für den Anfang helfen

kannst du mir da weiter helfen?

Re: Libre Office calc lesen und schreiben

Verfasst: Montag 11. November 2013, 18:25
von karolus
Hallo

Um keine Begriffe durcheinander zu bringen - in Python kann man keine od*-dateien importieren


Du findest Beispiele im Programmordner von LO unter ./share/Scripts/Python

Hier noch etwas zusammengewürfeltes für calc

Code: Alles auswählen

context = XSCRIPTCONTEXT # globale Variable im sOffice-kontext


def example(): # funktioniert nur aus Calc 
    doc = context.getDocument() #aktuelles Document per Methodenaufruf ! mit Klammern !
    sheets = doc.Sheets # ! Attributaufruf ohne Klammern !
    firstsheet = sheets.getByIndex(0) # erstes Blatt per Index
    secondsheet = sheets.getByName('Tabelle2') # 'Tabelle2 per Namen
    
    firstsheet.geCellByPosition(0,0).Value = 3.14
    firstsheet.getCellRangeByName('B1').String = 'Hallo Welt'
    firstsheet.getCellByPosition(0,9).Formula = '=SUM(A1:A9)'    
    # ↓Das gleiche unten mit Lokalisiertem Funktionsnamen
    #firstsheet.getCellByPosition(0,9).FormulalaLocal = '=SUMME(A1:A9)'

    datarange = secondsheet.getCellRangeByPosition(0, 1, 3, 2) # A2:D3

    data = ((1, 2, 3, 4),
            (5, 6, 7, 8))
    
    datarange.setDataArray(data)

Re: Libre Office calc lesen und schreiben

Verfasst: Dienstag 12. November 2013, 09:33
von karolus
Hallo

Die Zeile 10 oben muss natürlich lauten:

Code: Alles auswählen

    firstsheet.getCellByPosition(0,0).Value = 3.14

Karolus