Date: prev next · Thread: first prev next last
2022 Archives by date, by thread · List index


Hey Thomas,

Vielen Dank für die Hilfe, das heisst an sich ich mach nix falsch, habe es gerade mit einer leeren ods datei noch einmal probiert da klappt es Anstandslos :) dann liegt es wohl an der Komplexität unserer 10 MB  Tabelle :D ich schick mal nen libreoffice bauprozess los, vielleicht wird daraus ja sogar ein Bugfix :)

Mit freundlichen Grüßen,

Gerrit

On 21.11.22 20:01, Thomas Krumbein wrote:
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



--
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.