deutsches Forum rund um Apache OpenOffice und LibreOffice
Zum Inhalt
von vierviervier » Do, 22.10.2015 08:40
von Karolus » Mi, 21.10.2015 17:46
Aber einen Doppelpunkt in den Dateinamen einzubauen ist ne blöde Idee.
von TrueColor » Mi, 21.10.2015 16:30
Karolus hat geschrieben:Code: Alles auswählen[...]spath= dt.strftime(dt.now(),"T:/DOW_Arbeit/Listen_sonstige/" "Listen_CSV/EXPORT_IBAN_" "%Y-%m-%d_%H:%M:%S.csv")
Code: Alles auswählen
[...]spath= dt.strftime(dt.now(),"T:/DOW_Arbeit/Listen_sonstige/" "Listen_CSV/EXPORT_IBAN_" "%Y-%m-%d_%H:%M:%S.csv")
von Karolus » Mi, 21.10.2015 14:53
import csv from csv import QUOTE_ALL, QUOTE_MINIMAL from datetime import datetime as dt def export_csv(*args): spath= dt.strftime(dt.now(),"T:/DOW_Arbeit/Listen_sonstige/" "Listen_CSV/EXPORT_IBAN_" "%Y-%m-%d_%H-%M-%S.csv") #edit Doppelpunkte in der Zeit gegen minus getauscht #spath = 'test_csv.csv' doc = XSCRIPTCONTEXT.getDocument() export_sheet = doc.Sheets.getByName("Tabelle1") cursor = export_sheet.createCursor() cursor.gotoEndOfUsedArea(True) with open(spath, 'w')as csvfile: writer = csv.writer(csvfile, delimiter=';', quotechar='"', quoting=QUOTE_ALL ) #↓↓ blöder Hack weil .FormulaArray die `echten` Formeln zurückgibt, #↓↓ und .DataArray **alle** numerischen Daten als Float mit Dezimal**punkt** for r in range(cursor.Rows.Count): writer.writerow([cursor.getCellByPosition(c, r).String for c in range(cursor.Columns.Count)])
von TrueColor » Mi, 21.10.2015 14:04
von Karolus » Mi, 21.10.2015 12:03
Ich habe nicht rausgefunden, warum.
von vierviervier » Mi, 21.10.2015 10:42
REM Variablen deklaration. Dim oDok as Object Dim oExport as Object, oExternExportCSV as Object, oExterneCSV as Object Dim aExtDatArray() Dim sErmittlungsBlatt as String, sDatenBereich as String Dim myFPq(0) as New com.sun.star.beans.PropertyValue Dim myProps(1) as New com.sun.star.beans.PropertyValue ' '############################################################################################################## ' Sub ErzeugeExportDaten REM Tabellenblatt Variablennamen definition. oDok = ThisComponent oExport = oDok.getSheets().getByName("Export") '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ REM Neue und leere Datei versteckt erstellen, die dann als CSV gespeichert wird. ' myFPq(0).name = "Hidden" myFPq(0).Value = True ' REM wenn man diese versteckte Datei sehen will, einfach True durch False ersetzen. oExterneCSV = starDesktop.loadComponentfromURL("private:factory/scalc", "_blank", 0, myFPq()) oExternExportCSV = oExterneCSV.sheets(0) '-------------------------------------------------------------------------------- ' Die Daten vom Blatt *Export* in die neue, leere und versteckte Datei kopieren. ' sErmittlungsBlatt = oExport.name Benutzter_Datenbereich REM Aufruf der Sub. aExtDatArray = oExport.getCellRangeByName( sDatenBereich ).getDataArray REM Datenbereich einlesen (kopieren). oExternExportCSV.getCellRangeByName( sDatenBereich ).setDataArray(aExtDatArray) REM Datenbereich einfügen. '-------------------------------------------------------------------------------- Externe_CSV_speichern REM Aufruf der Sub. '-------------------------------------------------------------------------------- MsgBox("Ihre Datensätze wurden als CSV-Datei gepeichert." & Chr(13) & "Ihr Computer wünscht Ihnen noch einen schönen Tag.") End Sub ' '############################################################################################################## ' Sub Externe_CSV_speichern Dim sPfad as String Dim sCSVname as String Dim sCSVzusatz as String Dim sSpeicherString as String Dim DatumZeit as Date sPfad = "file:///T:/DOW_Arbeit/Listen_sonstige/Listen_CSV/" REM Den Speicherpfad vorgeben sCSVname = "EXPORT_IBAN_" REM Das ist der Vorname der CSV-Datei. Der Nachname wird bei sCSVzusatz erstellt. DatumZeit = Now() sCSVzusatz = Format(Now(), "yyyy-mm-dd") & "_" & Format(Now(), "hh-mm-ss") & ".csv" '-------------------------------------------------------------------------------- myProps(0).Name = "FilterName" myProps(0).Value ="Text - txt - csv (StarCalc)" myProps(1).Name="FilterOptions" myProps(1).Value = "59,34,ANSI,1,,0,false,true,true,false" '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sSpeicherString = sPfad & sCSVname & sCSVzusatz REM Nun wird der Vor- und Nachname der CSV zusammen geschrieben. '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' CSV-Datei speichern und schließen. oExterneCSV.storeAsURL(sSpeicherString, myProps()) REM Die CSV wird gespeichert oExterneCSV.close(True) REM Die CSV wird geschlossen. End Sub ' '############################################################################################################## ' Sub Benutzter_Datenbereich Rem Hier wird der benutzte Datenbereich eines Blattes ermittelt, und in der Stringvariable sDatenBereich zurückgegeben. oSheet = ThisComponent.getSheets().getByName( sErmittlungsBlatt ) oCellCursor = oSheet.createCursor() oCellCursor.GotoEndOfUsedArea(True) sDatenBereich = REPLACE(oCellCursor.AbsoluteName, "$" & oSheet.Name & ".", "") End Sub
von TrueColor » Mi, 21.10.2015 10:14
balu hat geschrieben:Quäle mich derzeit noch mit ner starken Erkältung rum, deshalb nur kurz.
Ich sagte ja schon das die Sache mit der Datumsformatierung nicht so einfach ist. Aber warum nicht ganz einfach so rum? Code: Alles auswählensCSVzusatz = Format(Now(), "yyyy-mm-dd") & "_" & Format(Now(), "hh-mm-ss")
sCSVzusatz = Format(Now(), "yyyy-mm-dd") & "_" & Format(Now(), "hh-mm-ss")
Vier hat geschrieben:dass wir uns im Jahr 1905 befinden
von balu » Di, 20.10.2015 19:32
wie das in Calc vorher ausprobieren?
=TEXT(A1;"YYYY-MM-DD")& " - " & TEXT(A2;"HH-MM-SS")
=TEXT(A1;"YYYY MM DD")& " - " & TEXT(A3;"HH MM SS")
von vierviervier » Di, 20.10.2015 16:48
von balu » Di, 20.10.2015 16:33
Karolus hat geschrieben: damit ihr
Karolus hat geschrieben: vernünftig*** zu programmieren
TrueColor hat geschrieben: Oh, ich glaube, dass ist dann auf meinem Mist gewachsen.
von vierviervier » Di, 20.10.2015 15:17
von TrueColor » Di, 20.10.2015 14:37
Karolus hat geschrieben:Mal ganz nebebei gefragt - wie grausam muss der Basic-code eigentlich aussehen, damit ihr eventuell mal darüber nachdenkt diese triviale Geschichte vernünftig*** zu programmieren?
von TrueColor » Di, 20.10.2015 14:31
vierviervier hat geschrieben:@truecolor: naja, auf die Striche würde ich jetzt nicht bestehen. Wichtig ist die Reihenfolge Jahr Monat ... und das die fehlenden Nullen ergänzt werden, damit man die Datensätze dann zeitlich mit einem Klick ordnen kann.
von vierviervier » Di, 20.10.2015 14:22
Nach oben