AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Export -> CSV mit Überschriften

Ein Thema von HolgerCW · begonnen am 4. Sep 2007 · letzter Beitrag vom 23. Nov 2007
Antwort Antwort
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#1

Export -> CSV mit Überschriften

  Alt 4. Sep 2007, 10:59
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Export -> CSV mit Überschriften

  Alt 4. Sep 2007, 11:00
Wie exportierst du?
Wie sieht die Datei aus?
SYLK != CSV
Markus Kinzler
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#3

Re: Export -> CSV mit Überschriften

  Alt 4. Sep 2007, 11:09
Hi,

anbei mal die Exportierte CSV-Datei. -> CSV = verboten. Kann ich leider nicht hochladen

und mein Export Code:

Delphi-Quellcode:
//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;
Schon mal danke.

Gruss

Holger
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#4

Re: Export -> CSV mit Überschriften

  Alt 6. Sep 2007, 08:49
Weiss da keiner eine Lösung ?

Gruss

Holger
  Mit Zitat antworten Zitat
Benutzerbild von Surrounder
Surrounder

Registriert seit: 26. Sep 2003
Ort: Stuttgart
177 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Export -> CSV mit Überschriften

  Alt 23. Nov 2007, 08:45
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
In C geschrieben und schön war zuletzt Franz Schuberts 9. Symphonie
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Export -> CSV mit Überschriften

  Alt 23. Nov 2007, 09:23
Delphi-Quellcode:
Str := Spaltennamen[0];

//Überschriften
for T := 1 to Spalten.Count - 1 do
begin

  Str := ', ' + Str + Spaltennamen[T] + ';';

end;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Surrounder
Surrounder

Registriert seit: 26. Sep 2003
Ort: Stuttgart
177 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Export -> CSV mit Überschriften

  Alt 23. Nov 2007, 09:37
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
In C geschrieben und schön war zuletzt Franz Schuberts 9. Symphonie
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Export -> CSV mit Überschriften

  Alt 23. Nov 2007, 09:38
Mit ging es in meinem Beitrag um die fehlenden Trenner.
Markus Kinzler
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#9

Re: Export -> CSV mit Überschriften

  Alt 23. Nov 2007, 10:12
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:
while not dataset.eof do
begin
   // ***
   dataset.Next
end;
Dort wo die drei *** stehen, eine Schleife über alle Felder und fields[i].DisplayText rausschreiben.
Andreas
  Mit Zitat antworten Zitat
wol

Registriert seit: 13. Nov 2007
Ort: Stuttgart
21 Beiträge
 
Delphi 6 Personal
 
#10

Re: Export -> CSV mit Überschriften

  Alt 23. Nov 2007, 22:56
Zitat von HolgerCW:
Hallo zusammen,

wenn ich mein DBGrid ohne Überschriften als CSV exportiere klappt das super.
[.....]
Gruss

Holger
Versuch mal, die *.csv Datei nicht per doppelclick zu öffnen sondern:
aus Excel mit Datei/öffnen ...
Gruß Wolfgang
Danke / Bitte; Gruß Wolfgang
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz