Hei Gerrit,
also, mit Python hab ich noch nicht viel experimentiert - wohl aber
mit Basic.
Und bei den Fällen dürfte es kaum Unterschiede geben.
Die Methode setFormulaArray() erwartet als Übergabeparameter einen
Array von Arrays - mit jeweils gültigen Calc-Formeln beginnend mit
einem Gleichheitszeichen.
Die Formeln müssen in der englischen Schreibweise erfolgen!
eine einfache Übergabe könnte wie folgt aussehen:
oDoc = thisComponent
oSheet = oDoc.sheets(0)
oBereich = oSheet.getCellRangeByPosition(1,1,1,4)
aFormel = array(array("=a2"), array("=a3"), array("=a4"),
array("=a5"))
oBereich.setFormulaArray(aFormel)
Der Bereich definiert die Zellen B2-B5 und funktioniert (eben
getestet).
Verwendest Du 2 Spalten (B+C) dann würden die inneren Arrays eben 2
Elemente haben müssen.
Jetzt musst Du diese Array-Funktionen eben auf Python-typische
Notation umsetzen - dann sollte es auch laufen.
Ob eine Tuple-Funktion das erfüllen kann, kann ich leider nicht sagen.
Ich hoffe, es hilft.
Viele Grüße
Thomas
Am 21.11.2022 um 16:46 schrieb Gerrit Großkopf:
Hallo in die Runde,
Ich benutze Libreoffice 7.3.7.2 über python uno und versuche
aktuell einen Bereich mit formeln zu füllen, doch immer wenn ich
setFormulaArray verwende, wird mir eine RuntimeException geworfen,
Zeile 5030 von
https://git.libreoffice.org/core/+/refs/tags/libreoffice-7.3.7.2/sc/source/ui/unoobj/cellsuno.cxx
Meine Versuchsreihe geht so:
file.Sheets.getByName('Moni').getCellRangeByPosition(30,10,32,343).setFormulaArray(list)
mit unterschiedlichen Parametern in list, manchmal sowas:
list = tuple([(
str(f'{{=MULTIPLE.OPERATIONS($AD{row};$AD$8;AE$8}}'),
str(f'{{=MULTIPLE.OPERATIONS($AD{row};$AD$8;AF$8}}'),
str(f'{{=MULTIPLE.OPERATIONS($AD{row};$AD$8;AG$8}}')
) for row in range(9,343)])
manchmal versuch ich auch einfach sowas:
list=file.Sheets.getByName('Moni').getCellRangeByPosition(30,10,32,343).getFormulaArray()
sogar
phpp.Sheets.getByName('Moni').getCellRangeByPosition(30,10,32,12).setFormulaArray((('a','b','c',),('d','e','f',),('g','h','i',),))
wirft denselben fehler
Immer kommt derselbe Fehler, kennt jemand die Funktion und hat ein
Beispiel mit dem sie Funktioniert? Ich würde halt gerne ein
einfügen von mehreren Zellen gleichzeitig machen, da ich sonst so
140000 Zellen einzeln setzen muss und das ist eher arg zeitaufwändig
Mit freundlichen Grüßen,
Gerrit Großkopf