![]() |
Export -> CSV mit Überschriften
Hallo zusammen,
wenn ich mein DBGrid ohne Überschriften als CSV exportiere klappt das super. Wenn ich nun in der ersten Zeile der CSV - Datei die Überschriften mit angebe klappt der Export auch, nur kommt beim starten der CSV - Datei in Excel folgende Fehlermeldung: Kann Datensatz 1 nicht lesen. Weiterhin jeden Fehler anzeigen ? -> Klicke dann auf 'Ja' und es kommt: Excel hat festgestellt dass 'Dateiname.xls' eine SYLK-Datei ist, aber es kann die Datei nicht laden. Entweder ist die Datei fehlerhaft, oder es ist kein gültiges SYLK-Dateiformat. Klicken Sie OK, um die Datei in einem anderen Format zu öffnen. -> Klicke ich dann auf OK, wird auch alles richtig dargestellt. Nur kommen halt vorher diese beiden Meldungen. Was muss ich tuen ? Gruss Holger |
Re: Export -> CSV mit Überschriften
Wie exportierst du?
Wie sieht die Datei aus? SYLK != CSV |
Re: Export -> CSV mit Überschriften
Hi,
anbei mal die Exportierte CSV-Datei. -> CSV = verboten. Kann ich leider nicht hochladen und mein Export Code:
Delphi-Quellcode:
Schon mal danke.
//Exportieren eines DBGrids
procedure Exportieren(DBGrid: TDBGrid; Spalten:TStringList;Spaltennamen:TStringlist); var Str: String; StrList: TStringList; I: Integer; T: Integer; Query :TQuery; MyFloat: Double; MyINt: Integer; MyDate: TDateTime; begin I := 0; T := 0; StrList := TStringList.Create(); Str := ''; //Überschriften for T := 0 to Spalten.Count - 1 do begin Str := Str + Spaltennamen[T] + ';'; end; StrList.Add(Str); Query := ((DBGrid.DataSource).DataSet as TQuery); Query.First; Query.DisableControls; //Daten while Query.Eof <> true do begin Str := ''; for I := 0 to Spalten.Count - 1 do begin If Query['' + Spalten[I] + ''] <> Null then begin if TryStrToFloat(Query['' + Spalten[I] + ''], MyFloat) = True then begin Str := Str + floattostr(Query['' + Spalten[I] + '']) + ';'; end else begin if TryStrToInt(Query['' + Spalten[I] + ''], MyInt) = True then begin Str := Str + inttostr(Query['' + Spalten[I] + '']) + ';'; end else begin if TryStrToDate(Query['' + Spalten[I] + ''], MyDate) = True then begin Str := Str + datetostr(Query['' + Spalten[I] + '']) + ';'; end else begin Str := Str + Query['' + Spalten[I] + ''] + ';'; end; end; end; end else begin Str := Str + ' ;'; end; end; StrList.Add(Str); Query.next; end; Query.EnableControls; //dann wird die Datei gespeichert StrList.SaveToFile('U:\Wächter\TerMaS\Files\Export_TerMaS.csv'); //dann wird die Datei mit Excel geöffnet: ShellExecute(Application.Handle, 'OPEN', pchar('U:\Wächter\TerMaS\Files\Export_TerMaS.csv'), NIL, NIL, SW_NORMAL); //und schließlich die csv-Datei wieder gelöscht DeleteFile('U:\Wächter\TerMaS\Files\Export_TerMaS.csv'); end; Gruss Holger |
Re: Export -> CSV mit Überschriften
Weiss da keiner eine Lösung ?
Gruss Holger |
Re: Export -> CSV mit Überschriften
Ich hatte das gleiche Problem, und habe festgestellt dass wenn man die Einträge der erste Zeile, also die Überschrift, in Anführungszeichen setzt dann geht es
|
Re: Export -> CSV mit Überschriften
Delphi-Quellcode:
Str := Spaltennamen[0];
//Überschriften for T := 1 to Spalten.Count - 1 do begin Str := ', ' + Str + Spaltennamen[T] + ';'; end; |
Re: Export -> CSV mit Überschriften
genau das hatte ich, das ging aber nicht weil ich Spaltenüberschriften mit Leerzeichen hatte. Deshalb habe ich die Überschriften einfach in doppelte Hochkommas gesetzt, und dann ging es. Ansonsten hatte ich genau die gleiche Fehlermeldung wie von HolgerCW beschrieben. Ich dachte nur ich poste das für den fall dass das nochmals jemand sucht
|
Re: Export -> CSV mit Überschriften
Mit ging es in meinem Beitrag um die fehlenden Trenner.
|
Re: Export -> CSV mit Überschriften
Bei deinem Code ist schon der Ansatz falsch.
Exportiert wird nicht ein DBGrid, sondern ein TDataset. Ob ein Feld exportiert wird, wird durch das Property Visible jedes Feldes entschieden. Der Ablauf ist so: eine Schleife über Dataset.Fields[]; wenn Feld Visible ist, dann fields[i].FieldName rausschreiben. Dann eine Schleife über alle Datensätze:
Delphi-Quellcode:
Dort wo die drei *** stehen, eine Schleife über alle Felder und fields[i].DisplayText rausschreiben.
while not dataset.eof do
begin // *** dataset.Next end; |
Re: Export -> CSV mit Überschriften
Zitat:
aus Excel mit Datei/öffnen ... Gruß Wolfgang |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz