Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi CSV Datei erstellen (https://www.delphipraxis.net/57696-csv-datei-erstellen.html)

AndiS75 25. Nov 2005 10:34


CSV Datei erstellen
 
Hallo erstmal,

bin neu hier im Forum und hab gleich mal eine Frage.
Ich möchte einen String in eine CSV Datei exportieren. Hier mal kurz mein Quellcode.

Delphi-Quellcode:

//GCSV wurde vorher als TStrings deklariert

GCSV.Text := 'Fahrzeugart;Interner Name;Angebotsart;Kategorie;Marke;Modell;Leistung;' +
                 'Hubraum;EZ;TUV;AU;Kmstand;Preis;Haendlerpreis;VHB;Sofortkaufpreis;Startpreis;' +
                 'Wiederbeschaffungswert;Mwst. ausweisbar;Mwstsatz;Arbeitskosten;Lackkosten;' +
                 'Ersatzteilkosten;Reparaturkosten;Anzeigedauer;Angebotsende/Enduhrzeit;' +
                 'Waehrung;Land;PLZ;Kraftstoff;Automatikgetriebe;Tueren;Farbe;Metallic;' +
                 'Unfallfahrzeug;Schadenbeschreibung;Vorschaden/Altschaden;Neufahrzeug;' +
                 'Jahresfahrzeug;Oldtimer;Taxi/Mietfahrzeug;Garantie;Info/Ausstattung;' +
                 'ABS;ESP;Allradantrieb;Anhaengerkuplung;Klimaanlage;Alufelgen;Lederausstattung;' +
                 'Sitzheizung;Wegfahrsperre;Navigationsystem;Zentralverriegelung;Tempomat;' +
                 'Serviceheft;Elektrostarter;Katalysator;Halbverkleidung;Vollverkleidung;' +
                 'Windschild;Topcase;EBS;Hydraulik;Intarder;Ladebordwand;Retarder;Schiebetuer;' +
                 'Trennwand;Vorfuehrfahrzeug;Kran;Tragkraft;Nutzlast;Gesamtgewicht;Hubhoehe;' +
                 'Bauhoehe;Betriebsstunden;Sitze;Schadstoff;Kabinenart;Achsen;Schlafplatz;TV;WC;' +
                 'Kompressor;Fronthydraulik;Frontheber;Kuehlanlage;Lueftfederung;Zentralschmierung;' +
                 'Standheizung;Kueche;Kraftstoffverbr.innerorts;Kraftstoffverbr.ausserorts;' +
                 'Kraftstoffverbr.ca. (im Durchschnitt);CO2-Emissionen kombiniert;' +
                 'Fahrzeughalter/Ansprechpartner Name;Fahrzeughalter/Ansprechpartner Vorname;' +
                 'Fahrzeughalter/Ansprechpartner Telefon;Fahrzeughalter/Ansprechpartner Mobil;' +
                 'Fahrzeughalter/Ansprechpartner E-Mail;Fahrzeughalter/Ansprechpartner Strasse Haus-                  Nr;' +
                 'Fahrzeughalter/Ansprechpartner Ort;Fahrzeughalter/Ansprechpartner PLZ;' +
                 'Fahrzeughalter/Ansprechpartner Land';



                 if CBMwSt.Text = 'n.ausweisbar' then
                 begin
                   hMwSTAus := '0';
                 end
                 else
                 begin
                   hMwSTAus := '1';
                 end;

                 if CBMwSt.Text = 'Deutschland' then
                 begin
                   hLand := 'D';
                 end;

                 if BesAutomatik.Checked then
                 begin
                   hAutoMa := '1';
                 end
                 else
                 begin
                   hAutoMa := '0';
                 end;

                 if CBMetallic.Checked then
                 begin
                   hMetallic := '1';
                 end
                 else
                 begin
                   hMetallic := '0';
                 end;

                 GCSV.Text := GCSV.Text + CBFzgArt.Text + ';' + EditGaNr.Text + ';' + 'restwert'
                 + ';' +
                 CBKateg.Text + ';' + CBMarke.Text + ';' + EditModell.Text + ';' + EditLeist.Text
                 + ';' +
                 EditHubraum.Text + ';' + '00/' + EditEZ.Text + ';' + '00/' + EditTUEV.Text + ';' +
                 '00/' + EditTUEV.Text + ';' + EditKM.Text + ';' + '0' + ';' + ';' + '0' + ';' +
                 '0' + ';' + '0' + ';' + '0' + ';' + EditWieder.Text + ';' + hMwSTAus + ';' +
                 CBMwStSatz.Text + ';' + EditLohn.Text + ';' + EditLack.Text + ';' + EditErsatz.Text
                 + ';' +
                 EditGesamt.Text + ';' + CBAnzDauer.Text + ';' + CBAnzEnde.Text + ';' + CBWaehr.Text
                 + ';' +
                 CBOrtPlz.Text + ';' + hLand + ';' + EditPlz.Text + ';' + CBKraftStoff.Text + ';' +
                 hAutoMa + ';' + EditTueren.Text + ';' + CBFarbe.Text + ';' + hMetallic + ';' + ''
                 + ';' +
                 MemoUnfall.Text + ';' + MemoVorSchaden.Text + ';';
   
    //SDCSV SaveDialog

    with SDCSV do
    begin
      Filter := 'CSV Dateien (*.csv)|*.csv';
      FileName := EditGaNr.Text;
      DefaultExt := 'csv';
      Options := [ofOverwritePrompt];

      if Execute then GCSV.SaveToFile(FileName);
Das Problem ist nun, dass die Datei erstellt wird aber nicht korrekt dargestellt wird. Wenn ich die CSV Datei mit dem Editor öffne, werden die Datenfelder und die Werte korrekt dargestellt. Öffne ich die CSV Datei aber mit Excel, stimmen die Feldern und Werte nicht mehr überein.

Gruß

Andreas

Luckie 25. Nov 2005 10:36

Re: CSV Datei erstellen
 
Was gibst du denn bei Excel als Trennzeichen an bzw. was ist voreinegstellt? Und was heißt "stimmen die Feldern und Werte nicht mehr überein"?

Aenogym 25. Nov 2005 10:38

Re: CSV Datei erstellen
 
inwiefern stimmen die daten nicht mit den feldern überein?
wenn die CSV im editor richtig angezeigt wird, dann hat wohl dien excel ein problem oder so ;)

aenogym

AndiS75 25. Nov 2005 10:49

Re: CSV Datei erstellen
 
Das weiss ich eben nicht ob das Problem bei Excel liegt oder bei mir. Ich habe eine CSV Datei als Vorlage. Dort wird in A1 die Datenfelder angegeben und in A2 die Werte zu den Feldern. Trennzeichen ist Semikolon.
Bei meiner Datei werden in A1 die Datenfelder angegeben und in A2, B2, C2 usw. Wenn ich die erstellte CSV Datei im Editor öffne passt alles. Deshalb bin ich ein bischen verwirrt.

Aenogym 25. Nov 2005 10:53

Re: CSV Datei erstellen
 
also hast möchtest du eine vertikale tabelle, dein delphiprogramm macht aber eine horizontale tabelle.

deine CSV-Datei sieht jetzt quasi so aus:

Code:
Feld1;Feld2;Feld3
Wert11;Wert12;Wert13
Wert21;Wert22;Wert23
damit du in excel aber das gewünschte aussehen bekommst, muss deine CSV-datei folgendermaßen aussehen:

Code:
Feld1;Wert11;Wert21
Feld2;Wert12;Wert22
Feld3;Wert13;Wert23
aenogym

AndiS75 25. Nov 2005 11:01

Re: CSV Datei erstellen
 
so sollte es sein(laut Vorlage!)
Delphi-Quellcode:
A1 = Fahrzeug; Kilometerstand; Farbe; Nummer; Kennzeichen;
A2 = Opel; 155555; Gelb; 12345; S-H 152;
und so ist es
Delphi-Quellcode:
A1 = Fahrzeug; Kilometerstand; Farbe; Nummer; Kennzeichen;
A2 = Opel; 155555; B2=Gelb; 12345; C2= S-H 152;
A,B,C beziehen sich auf die Excel Felder. Wie gesagt im Editor wird es korrekt angezeigt.

Also

Delphi-Quellcode:
Fahrzeug; Kilometerstand; Farbe; Nummer; Kennzeichen
Opel; 155555; Gelb; 12345; S-H 152;
Hintergrund : Es soll eine Schnittstelle werden. Die Daten werden im CSV Format übertragen!

Aenogym 25. Nov 2005 11:21

Re: CSV Datei erstellen
 
Liste der Anhänge anzeigen (Anzahl: 1)
hm,

also das semikolon trennt doch die einzelnen Zellen voneinander. deswegen kann ich es mir nicht erklären, wieso excel das bei dir so anzeigt.

im anhang siehst du, wie excel mir folgende CSV-datei anzeigt.
Code:
Fahrzeug; Kilometerstand; Farbe; Nummer; Kennzeichen;
Opel; 155555; Gelb; 12345; S-H 152;

AndiS75 25. Nov 2005 11:45

Re: CSV Datei erstellen
 
Liste der Anhänge anzeigen (Anzahl: 1)
die Datei soll nicht in Excel importiert werden, sonder über eine Webschnitstelle. Ich muss die Datei im CSV Format übergeben.
Vorlage wie es aussehen sollte ist im Anhang.

Aenogym 25. Nov 2005 12:01

Re: CSV Datei erstellen
 
hm in deinem code aus dem ersten beitrag sehe ich nirgends, dass du einen zeilenumbruch einfügst.
demnach würde sämtliche werte nacheinander in der textdatei stehen. und dann hast du den effekt, dass sich alle über eine zeile erstreckt.

Hansa 25. Nov 2005 12:25

Re: CSV Datei erstellen
 
So was :

Delphi-Quellcode:
if CBMwSt.Text = 'n.ausweisbar' then
ist sehr gefährlich. Was soll das machen, bzw. warum ein String-Vergleich ? Die Daten sollen geschrieben werden, oder ? Die Knackpunkte wurden allerdings bereits genannt : Trennzeichen und Zeilenende. Der Savedialog verkompliziert die Sache sowieso. Schreibe doch besser zeilenweise.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:48 Uhr.
Seite 1 von 2  1 2      

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