Libre Office Calc - Bestimmte Zelleninhalte in Datenbank oder CSV exportieren und wieder einlesen
Verfasst: Mittwoch 19. Februar 2020, 09:58
Guten Tag werte Community,
da ich auch nach längerer Suche nicht wirklich schlauer geworden bin, hoffe ich nun hiermit auf konstruktive Lösungen meiner Problematik. Ich hoffe, dass ich hier keinen auf den Deckel bekomme! =D
Es geht um folgende Situation:
Mit Hilfe von Libre Office Calc habe ich ein Template erstellt, in dem sich ein Angebot sowie eine Rechnung schreiben lassen.
Hinzu komt, dass ein Tabellenblatt ein Kundenregister beinhaltet, auf das dann über ein Dropbdown-Suchfeld in den entsprechenden Template-Blättern zugegriffen werden kann.
Die Funktionen dieser Datei sind so aufgebaut, dass man im Briefkopf die Daten vom Kunden eintragen lassen kann und im weiteren Verlauf alle Positionen erstellt, beschreibt und bepreist.
Im Kundenregister ist es möglich neue Kunden einzutragen, bzw. die Daten von bestehenden zu verändern oder gar zu löschen.
Die Daten waren bisher in einer Libre Office Base Datenbank hinterlegt.
All das hat wundervoll funktioniert, nachdem ich die Makros mühselig über Basic programmiert habe (hatte keine Vorkenntnisse).
Doch dank aktueller Situation mit Java funktioniert die Kommunikation zwischen der Datenbank und der Calc-Datei nicht mehr.
Oder bin ich tatsächlich zu blöd für eine neue Konfiguration? (Das wäre ja traumhaft!)
Als Lösung dachte ich mir, für die Datenhinterlegung alternativ eine CSV-Datei anzulegen, in die alle relevanten Informationen eingeschrieben und beim Öffnen der Angebots-& Rechnungsdatei ausgelesen werden.
Das ganze soll mit Hilfe von Python-Makros geschehen. Vielleicht hat ja jemand noch eine viel bessere Lösungsvariante parat? (Besser als mit Python? Gibt's doch gar nicht! ;D)
Nun bin ich ein absoluter Python-Neuling, fasziniere mich jedoch bereits jetzt für das Programmieren, speziell mit dieser Sprache.
Hinbekommen habe ich allerdings erst einen simplen Export von festgelegten Zellwerten in eine CSV-Datei, die neu angelegt wird.
Siehe Code:
Nun zu meinen Fragestellungen:
Wie bekommt man es hin, dass alle Daten in Zeile 1 (z.B. A1:C1) der Calc-Datei in eine Zeile, und alle Daten in Zeile 2 (z.B. A2:C2) in die nächste Zeile der CSV-Datei exportiert werden?
Und gibt es eine Möglichkeit, diese bestehende CSV-Datei nachträglich zu ergänzen? Sodass, sie quasi überschrieben wird? Oder sollte man besser immer eine neue generieren lassen?
Zu guter Letzt wäre noch interessant zu erfahren, wie ich die Werte der CSV-Datei in ein Arbeitsblatt der Calc-Datei importieren kann.
Meine bisherigen Quellen waren die folgenden:
http://christopher5106.github.io/office ... acros.html
https://www.youtube.com/watch?v=ybCzvUn ... dex=3&t=0s
viewtopic.php?t=40304
https://docs.python.org/3/library/csv.h ... DictReader
Sollten noch weitere Details von Nöten bzw. etwas unklar sein, zögert bitte nicht mir das zu äußern.
Ich entschuldige mich schonmal im Voraus für meine komplizierte Erklärweise sowie für meine Inkompetenz in Sachen Python-Makros für Libre Office.
Bis dahin einen angenehmen Arbeitstag und vielen lieben Dank im Voraus!
LG
brokkoli1337
da ich auch nach längerer Suche nicht wirklich schlauer geworden bin, hoffe ich nun hiermit auf konstruktive Lösungen meiner Problematik. Ich hoffe, dass ich hier keinen auf den Deckel bekomme! =D
Es geht um folgende Situation:
Mit Hilfe von Libre Office Calc habe ich ein Template erstellt, in dem sich ein Angebot sowie eine Rechnung schreiben lassen.
Hinzu komt, dass ein Tabellenblatt ein Kundenregister beinhaltet, auf das dann über ein Dropbdown-Suchfeld in den entsprechenden Template-Blättern zugegriffen werden kann.
Die Funktionen dieser Datei sind so aufgebaut, dass man im Briefkopf die Daten vom Kunden eintragen lassen kann und im weiteren Verlauf alle Positionen erstellt, beschreibt und bepreist.
Im Kundenregister ist es möglich neue Kunden einzutragen, bzw. die Daten von bestehenden zu verändern oder gar zu löschen.
Die Daten waren bisher in einer Libre Office Base Datenbank hinterlegt.
All das hat wundervoll funktioniert, nachdem ich die Makros mühselig über Basic programmiert habe (hatte keine Vorkenntnisse).
Doch dank aktueller Situation mit Java funktioniert die Kommunikation zwischen der Datenbank und der Calc-Datei nicht mehr.
Oder bin ich tatsächlich zu blöd für eine neue Konfiguration? (Das wäre ja traumhaft!)
Als Lösung dachte ich mir, für die Datenhinterlegung alternativ eine CSV-Datei anzulegen, in die alle relevanten Informationen eingeschrieben und beim Öffnen der Angebots-& Rechnungsdatei ausgelesen werden.
Das ganze soll mit Hilfe von Python-Makros geschehen. Vielleicht hat ja jemand noch eine viel bessere Lösungsvariante parat? (Besser als mit Python? Gibt's doch gar nicht! ;D)
Nun bin ich ein absoluter Python-Neuling, fasziniere mich jedoch bereits jetzt für das Programmieren, speziell mit dieser Sprache.
Hinbekommen habe ich allerdings erst einen simplen Export von festgelegten Zellwerten in eine CSV-Datei, die neu angelegt wird.
Siehe Code:
Code: Alles auswählen
import uno
import os
doc = XSCRIPTCONTEXT.getDocument()
def expVal2Csv():
sheet = doc.Sheets.getByName('Sheet1')
daten = sheet.getCellRangeByName('A1:A3')
url = doc.URL
syspath = uno.fileUrlToSystemPath(url)
directory = os.path.dirname(syspath)
x = daten.getDataArray()
f = open(directory+'/TEST.csv','w')
for e in x:
f.write(str(e[0]+','))
f.flush()
f.close()
Wie bekommt man es hin, dass alle Daten in Zeile 1 (z.B. A1:C1) der Calc-Datei in eine Zeile, und alle Daten in Zeile 2 (z.B. A2:C2) in die nächste Zeile der CSV-Datei exportiert werden?
Und gibt es eine Möglichkeit, diese bestehende CSV-Datei nachträglich zu ergänzen? Sodass, sie quasi überschrieben wird? Oder sollte man besser immer eine neue generieren lassen?
Zu guter Letzt wäre noch interessant zu erfahren, wie ich die Werte der CSV-Datei in ein Arbeitsblatt der Calc-Datei importieren kann.
Meine bisherigen Quellen waren die folgenden:
http://christopher5106.github.io/office ... acros.html
https://www.youtube.com/watch?v=ybCzvUn ... dex=3&t=0s
viewtopic.php?t=40304
https://docs.python.org/3/library/csv.h ... DictReader
Sollten noch weitere Details von Nöten bzw. etwas unklar sein, zögert bitte nicht mir das zu äußern.
Ich entschuldige mich schonmal im Voraus für meine komplizierte Erklärweise sowie für meine Inkompetenz in Sachen Python-Makros für Libre Office.
Bis dahin einen angenehmen Arbeitstag und vielen lieben Dank im Voraus!
LG
brokkoli1337