Hallo Allerseits!
Das Problem, dass LO beim Import von CSV-Dateien wegen
den Dienst verweigert, konnte ich so lösen:
Code: Alles auswählen
RunProgram(Chr(34)+Tabellenkalkulation$+Chr(34), infilter$ + " " + "-o "+Chr(34)+csvfile$+Chr(34), Chr(34)+GetPathPart(Tabellenkalkulation$)+Chr(34), #PB_Program_Wait)
wobei infilter$ den Parameter für den CSV-Import bereitstellt. Könnte zum Beispiel so aussehen:
Code: Alles auswählen
infilter$ = "--infilter="+Chr(34)+"csv:59/9,34,1,1,1/2/2/4/3/1/4/1/5/2/6/1/7/2/8/1,3072,true,false"+Chr(34)
Habe folgendes herausgefunden: Will man eine CSV-Datei öffnen, von der man den Aufbau kennt, erspart dieser Importfilter einiges an Nachbearbeitung in LO. In meinem Fall generiert ein Programm eine CSV-Datei (weil ich nicht weiß, wie man eine LO-Calc-Datei programmiert), deren Aufbau beispielsweise so aussieht:
1. Zeile Spaltenüberschriften
2. und folgende Zeilen sind alles Werte, und zwar in dieser Reihenfolge (Spalten, von links nach rechts): Text,Datum,Zahl,Text,Zahl,Text,Zahl
Dann müsste der Infilter-Parameter wie oben gezeigt aussehen, wobei die Werte folgendes bedeuten:
59/9 Trennung per Semikolon und/oder Tab
34 Trennung für Texte (z. B. Spaltenüberschriften aus Text müssen je Zelle in "" Gänsefüßchen eingeschlossen werden). Ist der jeweilige ASCII-Code für das betreffende Trennzeichen
1 (die erste 1 im Beispiel) steht für den Zeichensatz "Windows-1252/WinLatin 1 (Western)"
1 (die zweite) steht für die Zeilennummer, 1 = oberste Zeile in der Tabelle
dann folgen für jede Spalte von links nach rechts folgende Paare: Spaltennummer/Format (/S/F/S/F/S/F/... für weitere Spalten). Im Beispiel: 1/2 = erste Spalte, Wert = Text /2/4 (zweite Spalte, Wert = Datum DD.MM.YY), 3/1 = 3. Spalte, Format = Standard, usw.
zum Ende dann 3072 für Formate in deutsch(Deutschland) und 2 Bool-Werte, der erste steht für "Quoted field as text" = true, andernfalls false, der letzte für "Detect special numbers", wenn ja, dann true, sonst false.
Mit diesem Startparameter öffnet LO die Datei ohne Rückfragen, mein Proggi wartet brav ab (#PB_Program_Wait) und macht weiter, wenn LO beendet wurde.
Alle diese Einstellungen macht man auch, wenn man in LO eine CSV-Datei öffnet, dann erscheint ein Fenster, in dem genau diese Daten abgefragt werden (wenn nicht als infilter-Parameter schon gegeben). Das obige habe ich mir mehr oder weniger aus mehreren Quellen, zum Teil sehr alten, zusammengereimt und mag unvollständig oder fehlerhaft sein, für meine Zwecke funktioniert es. Vielleicht hilft es ja jemandem weiter.
Tirili & Hoppsassa
Bin mit 21 erstmals mit Computern in Kontakt gekommen und konnte mich daher in meiner Jugend ganz auf den Alkohol konzentrieren. Bin nun seit fast 40 Jahren programmiertechnisch konstant auf Anfänger-Level, konnte jedoch beim Thema Alkohol eine gewisse Virtuosität erreichen.
Irgendwas muss man ja gut können.