automatisches Berechnen abschalten
Moderator: Moderatoren
automatisches Berechnen abschalten
Hi,
ist es Möglich, das automatische Berechnen abzuschalten und nach aktualisierung der Daten wieder an ?
lg
Andreas
ist es Möglich, das automatische Berechnen abzuschalten und nach aktualisierung der Daten wieder an ?
lg
Andreas
Re: automatisches Berechnen abschalten
Aloha
Code: Alles auswählen
Sub DisableAutoCalc
oDoc = thisComponent
If oDoc.supportsService("com.sun.star.sheet.SpreadsheetDocument") Then
oDoc.enableAutomaticCalculation(False)
End If
'Mach irgendwas
If oDoc.supportsService("com.sun.star.sheet.SpreadsheetDocument") Then
oDoc.enableAutomaticCalculation(True)
End If
End Sub
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: automatisches Berechnen abschalten
Ja.
Das Wieder-Anschalten löst jedoch keine Neuberechnung aus.
Das erreichst Du mit
Zu Zeiten der Version OOo 2.x wurde damit jedoch kein Geschwindigkeitsvorteil erzielt. Messe am Besten mal selbst (F1>Timer)
Hilft das?
Code: Alles auswählen
Sub calculateCalcSheetOff
ThisComponent.enableAutomaticCalculation( FALSE )
End Sub
Das erreichst Du mit
Code: Alles auswählen
ThisComponent.calculate()
Hilft das?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: automatisches Berechnen abschalten
Huch, warum hab' ich die Antwort von DPunch nicht gesehen beim Speichern?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: automatisches Berechnen abschalten
hi, danke für eure ANtworten.
Ich glaube schon, daß es einen riesigen Geschwindigkeitsvorteil gibt.
folgendes Szenario :
Ich habe eine Datei mit 8 Tabellen + Jahresübersicht
Jede Tabelle hat 8 Spalten und 365 +24 Zeilen mit Formeln
Nun liest ein Makro 6 verschiedene txt-Dateien aus und schreibt sie in eine 9.Tabelle, aus der die Formeln Ihre Daten beziehen.
wenn nun nach jedem Eintrag alle Tabellen neu berechnet werden, 20-40000 Datensätze *2 sekunden Neuberechnung, spart man durch das Unterlassen jede Menge Zeit.
Das einlesen der txt-Dateien dauert ohne weitere Formeln ca. 1 Minute, mit ... nun ja, einfach mal n Snickers, wenns wieder länger dauert ^^
lg
Andreas
Ich glaube schon, daß es einen riesigen Geschwindigkeitsvorteil gibt.
folgendes Szenario :
Ich habe eine Datei mit 8 Tabellen + Jahresübersicht
Jede Tabelle hat 8 Spalten und 365 +24 Zeilen mit Formeln
Nun liest ein Makro 6 verschiedene txt-Dateien aus und schreibt sie in eine 9.Tabelle, aus der die Formeln Ihre Daten beziehen.
wenn nun nach jedem Eintrag alle Tabellen neu berechnet werden, 20-40000 Datensätze *2 sekunden Neuberechnung, spart man durch das Unterlassen jede Menge Zeit.
Das einlesen der txt-Dateien dauert ohne weitere Formeln ca. 1 Minute, mit ... nun ja, einfach mal n Snickers, wenns wieder länger dauert ^^
lg
Andreas
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: automatisches Berechnen abschalten
Hier liegt IMHO das Potential von Zeiteinsparung: schreibe die Werte nicht einzeln in die Zellen, sondern als Array!keksi1970 hat geschrieben:wenn nun nach jedem Eintrag alle Tabellen neu berechnet werden
Suchbgeriff: oRange.getDataArray()
Einmal einfügen - einmal berechnen
Viel Erfolg!
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: automatisches Berechnen abschalten
Kann komma4 nur zustimmen - mit einem (Data-)Array kannst Du unglaublich viel Zeit im Vergleich zum einzelnen Eintragen aller Daten in die Zellen rausholen.
Anstatt also jeden einzelnen Datensatz aus den Txt-Dateien auszulesen und direkt in die Zelle(n) in der 9. Tabelle zu schreiben, pack Dir die Daten erstmal in ein Array und schreibe dieses mittels SetDataArray in die Tabelle - das sollte den Zeitaufwand mindestens halbieren (so zumindest meine Erfahrung bei vielen Daten, die in Zellen geschrieben werden sollen).
Anstatt also jeden einzelnen Datensatz aus den Txt-Dateien auszulesen und direkt in die Zelle(n) in der 9. Tabelle zu schreiben, pack Dir die Daten erstmal in ein Array und schreibe dieses mittels SetDataArray in die Tabelle - das sollte den Zeitaufwand mindestens halbieren (so zumindest meine Erfahrung bei vielen Daten, die in Zellen geschrieben werden sollen).
Re: automatisches Berechnen abschalten
hi,
wie gesagt, das Auslesen und Schreiben an sich ist nicht das Problem(a)
nur das sofort berechnet wird, und da hat komma4 mir schon extrem geholfen
zu Problem a
ich habs erst mal hingekriegt, daß ich die Textdateien (zeile für Zeile) in EINEN String packe und als Split() in die Zellen eintrage.
wenn ihr mir allerdings einen Tipp gebt, wie ich aus einem setdataArray() die einzelnen Daten in verschiedene Zellen setzen kann, würd ich das nachvollziehen können. Inzwischen sollten alle Rechner auf 3.11 sein, unter 2.41 verhält sich setdataarray etwas anders
Problemstellung:
Grösse der Textdatei : unbekannt
Anzahl Daten : unbekannt
Aufbau der Dateien :
Datum(als Zahl(also 40290 zB));wert1.00;Wert2.00;Wert3.00
Setze Wert1.00 in Spalte 1, Wert2.00 in Spalte 5, Wert3 in SPalte 9, wo das Datum stimmt
(.getcellrangebyname("A" & Datum-40177))
Einzeln Auslesen kein Problem, aber mit setdataArray krieg ich das so nicht hin.
habt ihr da n Vorschlag ?
LG
Andreas
wie gesagt, das Auslesen und Schreiben an sich ist nicht das Problem(a)
nur das sofort berechnet wird, und da hat komma4 mir schon extrem geholfen
zu Problem a
ich habs erst mal hingekriegt, daß ich die Textdateien (zeile für Zeile) in EINEN String packe und als Split() in die Zellen eintrage.
wenn ihr mir allerdings einen Tipp gebt, wie ich aus einem setdataArray() die einzelnen Daten in verschiedene Zellen setzen kann, würd ich das nachvollziehen können. Inzwischen sollten alle Rechner auf 3.11 sein, unter 2.41 verhält sich setdataarray etwas anders
Problemstellung:
Grösse der Textdatei : unbekannt
Anzahl Daten : unbekannt
Aufbau der Dateien :
Datum(als Zahl(also 40290 zB));wert1.00;Wert2.00;Wert3.00
Setze Wert1.00 in Spalte 1, Wert2.00 in Spalte 5, Wert3 in SPalte 9, wo das Datum stimmt

Einzeln Auslesen kein Problem, aber mit setdataArray krieg ich das so nicht hin.
habt ihr da n Vorschlag ?
LG
Andreas
Re: automatisches Berechnen abschalten
Die wichtige Frage ist, ob die Daten in den Textdateien in irgendeiner Art und Weise sortiert sind.
Wenn nicht, müsstest Du halt jede Zeile einzeln mit einem DataArray beschreiben, aber selbst das ist zumindest auf diesem Rechner ca. 40% schneller als jede Zelle einzeln anzusprechen.
Wenn die Daten sortiert sind, kannst Du mehrere Zeilen umspannende Arrays bilden und somit vermutlich nochmal mehr Geschwindigkeit rauskitzeln.
Für nicht sortierte Rohdaten würde das ungefähr so aussehen:
Wenn nicht, müsstest Du halt jede Zeile einzeln mit einem DataArray beschreiben, aber selbst das ist zumindest auf diesem Rechner ca. 40% schneller als jede Zelle einzeln anzusprechen.
Wenn die Daten sortiert sind, kannst Du mehrere Zeilen umspannende Arrays bilden und somit vermutlich nochmal mehr Geschwindigkeit rauskitzeln.
Für nicht sortierte Rohdaten würde das ungefähr so aussehen:
Code: Alles auswählen
oDoc = thisComponent
oSheet = oDoc.Sheets.getByName("Tabelle9")
Do While bNochmehrDatensaetze = True
'Datum und Werte aus Datei einlesen
nThisDate = Datum - 40177
oRange = oSheet.getCellRangeByName("A" & nThisDate & ":I" & nThisDate)
aData = oRange.getDataArray
aData(0)(0) = Wert1
aData(0)(4) = Wert2
aData(0)(8) = Wert3
oRange.setDataArray(aData)
Loop
Re: automatisches Berechnen abschalten
Hi,
danke erstmal für die Hilfe.
Also die Daten sind folgendermassen in der Textdatei sortiert :
Datum (Aufsteigend);Wert1.00;Wert2.00;Wert3.00 usw
stellsich mir die Frage, ob ich alle Daten auf einmal in ein Array packen kann (ohne Schleife)
wie ich die 1. Zeile aus einer textdatei auslesen kann, weiß ich, die naechste Zeile danach auch,aber krieg ich auch alle Daten auf einmal in ein Array?
LG
Andreas
danke erstmal für die Hilfe.
Also die Daten sind folgendermassen in der Textdatei sortiert :
Datum (Aufsteigend);Wert1.00;Wert2.00;Wert3.00 usw
stellsich mir die Frage, ob ich alle Daten auf einmal in ein Array packen kann (ohne Schleife)
wie ich die 1. Zeile aus einer textdatei auslesen kann, weiß ich, die naechste Zeile danach auch,aber krieg ich auch alle Daten auf einmal in ein Array?
LG
Andreas
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: automatisches Berechnen abschalten
nacheinander!
Die Array-Bearbeitung braucht nicht viel Zeit:
eine Zeile auslesen, Array-Element besetzen, Schleife
Die Array-Bearbeitung braucht nicht viel Zeit:
eine Zeile auslesen, Array-Element besetzen, Schleife
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: automatisches Berechnen abschalten
Hallo Zusammen,
ein Array ist ja ein zusammenhängender Bereich den Andreas so wie ich es sehe nicht hat.
anlegen welche dann in die entsprechenden Spalten der Tabelle mit setDataArray übertragen werden.
Oder habe ich da etwas übersehen?
Jürgen
ein Array ist ja ein zusammenhängender Bereich den Andreas so wie ich es sehe nicht hat.
Man könnte als Lösung vielleicht die Textdatei zeilenweise auslesen, splitten und drei "Spaltenarrays" in einem Rutschkeksi1970 hat geschrieben:Wert1.00 in Spalte 1, Wert2.00 in Spalte 5, Wert3 in SPalte 9
anlegen welche dann in die entsprechenden Spalten der Tabelle mit setDataArray übertragen werden.
Oder habe ich da etwas übersehen?
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem