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
--
Riederbergstr. 92
65195 Wiesbaden
Tel. 0611 - 188 53 39
Fax: 0611 - 188 53 40
e-Mail: tk@mic-consulting.de
--
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.