CSV exportieren mit Leerzeile

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

Moderator: Moderatoren

Hago
****
Beiträge: 135
Registriert: Di, 07.12.2004 16:44

CSV exportieren mit Leerzeile

Beitrag von Hago »

Hallo,

ich habe vor ca.15 Jahren ein Makro gebastelt, das Calc-Dateien als CSV-Dateien exportiert. Das funktioniert auch alles immer noch prima.
Jetzt hätte ich gerne, dass beim Exportieren automatisch eine Leerzeile angehängt wird, ohne, dass irgend jemand irgendwie eingreifen muss.

Hier das Makro:

Code: Alles auswählen

sub MachCSV_Fleisch

dim document   as object
dim dispatcher as object 
dim sUrl1$     

Dok = ThisComponent 
Controller = Dok.CurrentController 
Blatt = Controller.ActiveSheet 

document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:Save", "", 0, Array())

dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$B$7:$J$100"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Nr"
args4(0).Value = 2
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args4())

dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "ToPoint"
args5(0).Value = "$A$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args5())

dim args6(5) as new com.sun.star.beans.PropertyValue
args6(0).Name = "Flags"
args6(0).Value = "SDV"
args6(1).Name = "FormulaCommand"
args6(1).Value = 0
args6(2).Name = "SkipEmptyCells"
args6(2).Value = false
args6(3).Name = "Transpose"
args6(3).Value = false
args6(4).Name = "AsLink"
args6(4).Value = true
args6(5).Name = "MoveMode"
args6(5).Value = 4
dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args6())

dim args7(2) as new com.sun.star.beans.PropertyValue                       
'sUrl1$ = "file:///M:/Homepage/Preislisten/listeF.csv"          
'sUrl1$ = "file:///C:/xampp/htdocs/aserver/AAA/AAApflugi/listen/listeF.csv"
sUrl1$ = "file:///C:/Users/hz/Desktop/liste_F_1.csv"
args7(0).Name = "Overwrite"  
args7(0).Value = TRUE
args7(1).Name = "FilterName"
args7(1).Value = "Text - txt - csv (StarCalc)"
args7(2).Name = "FilterOptions"
args7(2).Value = "59,34,76,1,,0,true,true,true"
Dok.storeAsURL(sUrl1$, args7())

rem Shell("D:\perl\bin\perl.exe ftp-upload-CSV_listen.pl",1)

Dok.close(false)

end sub
Ich habe keine Ahnung, wie ich das anstellen soll - kann mir da vielleicht jemand helfen?

Grüße, Hago
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: CSV exportieren mit Leerzeile

Beitrag von balu »

Hallo Hago.
Hago hat geschrieben: Di, 20.12.2022 09:16 Jetzt hätte ich gerne, dass beim Exportieren automatisch eine Leerzeile angehängt wird, ...
Was sollen wir uns darunter vorstellen?

Reicht es denn nicht, wenn Du aus

Code: Alles auswählen

args2(0).Value = "$B$7:$J$100"
das hier machst?

Code: Alles auswählen

args2(0).Value = "$B$7:$J$101"

Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Hago
****
Beiträge: 135
Registriert: Di, 07.12.2004 16:44

Re: CSV exportieren mit Leerzeile

Beitrag von Hago »

Hallo balu,

nein, das bringt nichts.
Von den 100 vorgesehenen Zeilen werden meistens zwischen 45 und 65 Zeilen belegt.
In der exportierten CSV-Datei sind immer nur die belegten Zeilen und ein letzter Zeilenumbruch gespeichert.
Ich hätte nun gerne noch eine leere Zeile dazu, egal wie viele Zeilen mit Daten gefüllt sind.

Gruß, Hago
Karolus
********
Beiträge: 7442
Registriert: Mo, 02.01.2006 19:48

Re: CSV exportieren mit Leerzeile

Beitrag von Karolus »

Hallo

Code: Alles auswählen

import uno
path = uno.fileUrlToSystemPath( sUrl1 )
with open( path, "a" ) as csv_file:
    csv_file.write( "\n")
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Hago
****
Beiträge: 135
Registriert: Di, 07.12.2004 16:44

Re: CSV exportieren mit Leerzeile

Beitrag von Hago »

Hallo Karolus,

ich bräuchte schon noch ein paar erklärende Worte dazu.
Mir ist nicht klar, wie ich das in den Code einfügen soll.

Gruß, Hago
Hago
****
Beiträge: 135
Registriert: Di, 07.12.2004 16:44

Re: CSV exportieren mit Leerzeile

Beitrag von Hago »

außerdem:
ZA01.jpg
ZA01.jpg (20.12 KiB) 1585 mal betrachtet
Karolus
********
Beiträge: 7442
Registriert: Mo, 02.01.2006 19:48

Re: CSV exportieren mit Leerzeile

Beitrag von Karolus »

Hallo Hago
Hago hat geschrieben: Di, 20.12.2022 12:15 Hallo Karolus,

ich bräuchte schon noch ein paar erklärende Worte dazu.
Mir ist nicht klar, wie ich das in den Code einfügen soll.

Gruß, Hago
Im Eingangsbeitrag finde ich die auskommentierte Codezeile:

Code: Alles auswählen

rem Shell("D:\perl\bin\perl.exe ftp-upload-CSV_listen.pl",1)
Da hab ich mir gedacht daß du das sinngemäss auch mit einem externen python-script mit dem oben geposteten Code schaffst.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Hago
****
Beiträge: 135
Registriert: Di, 07.12.2004 16:44

Re: CSV exportieren mit Leerzeile

Beitrag von Hago »

Hallo Karolus,

Ach, jetzt verstehe ich, was du meinst. Das ist eine sehr gute Idee, ich kann das ja auch mit einem Perl-Script machen, da kenne ich mich besser aus und das dürfte ziemlich einfach werden. Blöd, dass ich da nicht früher drauf gekommen bin.

Vielen Dank!
Hago
Karolus
********
Beiträge: 7442
Registriert: Mo, 02.01.2006 19:48

Re: CSV exportieren mit Leerzeile

Beitrag von Karolus »

Hallo
Hm - eine sehr gute Idee ist das nicht, eher ein »würg-around«, aber wenns mit dem externen perl-script klappt dann isses ja gut.

( ist halt Geschmackssache, ich würde alles einschliesslich .csv -export von intern mit python regeln )
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Hago
****
Beiträge: 135
Registriert: Di, 07.12.2004 16:44

Re: CSV exportieren mit Leerzeile

Beitrag von Hago »

Mit Python habe ich eben noch überhaupt nie irgendwas zu tun gehabt.
Deshalb…

Wenn man das innerhalb des Makros mit Basic machen könnte, fände ich es gut.

Am besten wäre es, in dem Makro nicht einen festen Bereich zu kopieren, sondern nur die belegten Zeilen und dann noch eine Zeile dazu zu fügen.
Aber ich weiß eben nicht, wie das mit basic zu machen ist.

Gruß, Hago
Antworten