CALC: Dateien eines Ordners auswerten

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

style2104
Beiträge: 5
Registriert: Mi, 07.11.2012 07:54

CALC: Dateien eines Ordners auswerten

Beitrag von style2104 »

Hallo zusammen,

ich hoffe ich bin hier richtig.
Ich speichere meine Rechnungen als ods in einen Datumsordner ab.

Als konkretes Beispiel ist der Pfad bei mir:

\\DISKSTATION\Geschäft\GESCHAEFT\datum\2.11

Jetzt fallen bei mir am 2.11 beispielsweise 8 Rechnungen an, bei denen immer an der gleichen Stelle der Gewinn ausgewiesen wird.
Kann ich in diesen Ordner einen Datei einfügen die alle im Ordner stehenden Dateien auswertet?

Wenn ja kann ich dann diese Datei kopieren und im nächsten Ordner verwenden, beispielsweise 06.11.
Die Werte aus diesen Dateien kann ich händisch übertragen, es ist mir also egal wenn die Datei die im Ordner 6.11
die Daten aus dem Ordner 2.11 nicht weiß.

Danke schon mal für eure Hilfe

Werner
Zuletzt geändert von style2104 am Mi, 07.11.2012 17:44, insgesamt 1-mal geändert.
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Dateie eines Ordners Auswerten

Beitrag von Karolus »

Hallo
Ich würde nachmittags einen neuen Ordner anlegen 8)

Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
style2104
Beiträge: 5
Registriert: Mi, 07.11.2012 07:54

Re: Dateien eines Ordners Auswerten

Beitrag von style2104 »

Mir würde es halt darum gehen nicht alle 20-30 Dokumente am Abend nochmals
öffnen zu müssen, sondern die Werte der verschiedenen Dateien per Makro abzufragen.

MfG

Werner
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Dateien eines Ordners Auswerten

Beitrag von komma4 »

style2104 hat geschrieben:sondern die Werte der verschiedenen Dateien per Makro abzufragen.
[Moderation, 4]Mein Stichwort: verschoben in BASIC-Unterforum.

Bin mir relativ sicher, dass es mit Formeln nicht geht.
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)
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Dateien eines Ordners Auswerten

Beitrag von Karolus »

Hallo
style2104 hat geschrieben:Mir würde es halt darum gehen nicht alle 20-30 Dokumente am Abend nochmals
öffnen zu müssen, sondern die Werte der verschiedenen Dateien per Makro abzufragen.
Ich hatte schon deinen Ausgangspost so interpretiert - ich halte es aber grundsätzlich für den verkehrten Ansatz, viele zusammengehörende Daten in Einzeldokumenten abzuspeichern und quasi hinterher wieder einzusammeln.
Machs andersrum gib die Daten zentral in eine Datenbank ein, (notfalls tuts auch ein Tabellendokument) und erzeuge die Rechnungen als Serienbriefdokumente.

Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
style2104
Beiträge: 5
Registriert: Mi, 07.11.2012 07:54

Re: CALC: Dateien eines Ordners auswerten

Beitrag von style2104 »

aktuell schauts bei mir gerade so aus das ich für jeden Kunden ein Dokument anlege.

Diese Dokumente greifen per Sverweis auf meine zentrales Tabellendokument zu, wo Artikel EK VK usw.
hinterlegt sind.

Ich komme soweit eigentlich sehr gut damit zurecht.
Vor allem finde ich die Rechnungen wenn ich sie unter dem Datum speichere sehr schnell wieder.
Ich kann auch bei jedem Kunden die Preise manuell angleichen was mit einer DB schon etwas komplizierter
werden dürfte oder?

MfG

Werner
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: CALC: Dateien eines Ordners auswerten

Beitrag von Karolus »

Hallo
Ein erster Entwurf:

Code: Alles auswählen

# -*- coding: utf_8 -*-

from glob import glob

context = XSCRIPTCONTEXT


def get_data_from_folder( event=None ):
    doc = context.getDocument()
    sel = doc.getCurrentSelection()
    date = sel.String
    path = r'\\DISKSTATION\Geschäft\GESCHAEFT\datum\%s\*.ods'.decode('utf8') % date


    formula = """='file://%s'#Tabelle1.A1"""

    sheet = sel.getSpreadsheet()
    icol = sel.RangeAddress.StartColumn
    irow = sel.RangeAddress.StartRow

    formulas = [(formula % f,) for f in glob( path )]

    endrow = len(formulas) + irow -1
    outrange = sheet.getCellRangeByPosition(icol, irow, icol, endrow)
    outrange.setFormulaArray( tuple( formulas ))


 
Das Script erstellt Formelverknüpfungen in alle .ods Dateien zur Zelladdresse 'Tabelle1.A1' im eingetragenen Pfad + Datumsstring aus der aktuell selektierten
Zelle und schreibt die Formeln in die Spalte einschliesslich und unterhalb der selektierten Zelle.
Dok mit eingebettetem Script und Schaltfläche hängt an.
Datensammler.ods
(16.28 KiB) 63-mal heruntergeladen
Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
style2104
Beiträge: 5
Registriert: Mi, 07.11.2012 07:54

Re: CALC: Dateien eines Ordners auswerten

Beitrag von style2104 »

Ich trau mich es ja gar nicht zu sagen, aber
wo muss ich den Code implementieren?

Ich hab bisher noch sehr wenig mit Makros geschweige denn Java gemacht.

Ich hab bisher die Datei gespeichert und ein paar Test Dateien mit Werten in Tabelle A1 angelegt
Eine Auswertung ist aber leider nicht erfolgt.
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: CALC: Dateien eines Ordners auswerten

Beitrag von Karolus »

Hallo

Noch ein paar kleine Anpassungen, damits hoffentlich auch unter Windows läuft:

Code: Alles auswählen

from glob import glob
import uno



url_path = uno.systemPathToFileUrl
context = XSCRIPTCONTEXT


def get_data_from_folder( event=None ):
    doc = context.getDocument()
    sel = doc.getCurrentSelection()
    date = sel.String  #letzter Unterordner-name
    path = r'\\DISKSTATION\Geschäft\GESCHAEFT\datum\%s\*.ods'.decode('utf8') % date


    formula = """='%s'#Tabelle1.A1"""

    sheet = sel.getSpreadsheet()
    icol = sel.RangeAddress.StartColumn
    irow = sel.RangeAddress.StartRow

    formulas = [(formula % url_path(f),) for f in glob( path )]

    endrow = len(formulas) + irow -1
    outrange = sheet.getCellRangeByPosition(icol, irow, icol, endrow)
    outrange.setFormulaArray( tuple( formulas ))

 
Es ist nicht Java sondern Python-code.

Probier das erstmal aus dem angehängten Dokument heraus.
Der Basispfad \\DISKSTATION\Geschäft\GESCHAEFT\datum\ ist so im Script eingetragen - stimmt der ?
Wenn du die Testdateien in einem Unterordner .../5.11/ liegen hast musst du das so als Text in eine Zelle eintragen, diese Zelle auswählen und die Schaltfläche betätigen.
Wenn es nicht funktioniert, teil doch bitte mit ob es eine Fehlermeldung gibt, wenn ja welche, oder ob in den Zellen ein #REF! -fehler ausgegeben wird.
Datensammler2.ods
(16.3 KiB) 71-mal heruntergeladen
Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
style2104
Beiträge: 5
Registriert: Mi, 07.11.2012 07:54

Re: CALC: Dateien eines Ordners auswerten

Beitrag von style2104 »

Hi,

Vielen Dank schon mal für die Mühe die du dir gibst.

Wenn ich oben im Explorer die Adresse kopiere kommt das hier:
\\DISKSTATION\Geschäft\GESCHAEFT\datum\5.11

Sollte also passen.

Wenn ich aber in deinem Dokument das Datum eingebe, dann meine Eingabe nochmals per Mausklick auswähle
und im Anschluss auf die Schaltfläche klicke passiert leider gar nichts.

Irgendwas mach ich Falsch. Muss ich die Makros noch irgendwo einbetten?

Danke Werner
Antworten