Re: Heureka!: [de-users] Probleme mit "setFormulaArray"

2022-11-22 Diskussionsfäden Gerrit Großkopf

Ich hab sogar rausgefunden woran es lag :D

Ich hatte noch den Zellschutz aktiv und hab versucht in geschützte 
Zellen zu schreiben, die Fehlermeldung war nur etwas.. generell :D


Mit freundlichen Grüßen,

Gerrit

On 22.11.22 09:31, Gerrit Großkopf wrote:

Hey Thomas,

Ich hab das ganze nochmal bei unserer 10mb Datei ausprobiert und jetzt 
läuft der Befehl nach nur 2 minuten Minuten durch :D  Mega gut, ich 
freu mich drauf, jetzt erstmal den 30 minuten prozess für die 14 
zellen durchoptimieren und dann wird das ein großartiger Tag :D Ich 
mach nicht einmal was anderes, Computer war wohl nur müde und musste 
schlafen :D


Mit freundlichen Grüßen,

Gerrit

On 22.11.22 09:18, Gerrit Großkopf wrote:

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 
14 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+unsubscr...@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


Re: Heureka!: [de-users] Probleme mit "setFormulaArray"

2022-11-22 Diskussionsfäden Robert Großkopf

Hallo Gerrit,


Ich hab das ganze nochmal bei unserer 10mb Datei ausprobiert und jetzt 
läuft der Befehl nach nur 2 minuten Minuten durch :D  Mega gut, ich freu 
mich drauf, jetzt erstmal den 30 minuten prozess für die 14 zellen 
durchoptimieren und dann wird das ein großartiger Tag :D Ich mach nicht 
einmal was anderes, Computer war wohl nur müde und musste schlafen :D


So 'n Rechner hat da so komische Eingänge ("Unusual Serial Bus"). Sehen 
aus, als ob da Schokoladenstücke rein gehören. Vielleicht hilft das beim 
nächsten Mal. Und wenn die da nicht passen …


Gruß

Robert
--
Homepage: https://www.familiegrosskopf.de/robert


--
Liste abmelden mit E-Mail an: users+unsubscr...@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


Heureka!: [de-users] Probleme mit "setFormulaArray"

2022-11-22 Diskussionsfäden Gerrit Großkopf

Hey Thomas,

Ich hab das ganze nochmal bei unserer 10mb Datei ausprobiert und jetzt 
läuft der Befehl nach nur 2 minuten Minuten durch :D  Mega gut, ich freu 
mich drauf, jetzt erstmal den 30 minuten prozess für die 14 zellen 
durchoptimieren und dann wird das ein großartiger Tag :D Ich mach nicht 
einmal was anderes, Computer war wohl nur müde und musste schlafen :D


Mit freundlichen Grüßen,

Gerrit

On 22.11.22 09:18, Gerrit Großkopf wrote:

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 14 
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+unsubscr...@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