Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi CSV Import (https://www.delphipraxis.net/159746-csv-import.html)

MB3rlin 11. Apr 2011 12:21

CSV Import
 
hallo delphi-praxis community.
Ich möchte gernen einen CSV import selber schreiben ohne eine Komponente dazu verwenden. Ich hab hier im Forum und auch mit anderen Suchmaschinen gesucht, leider nichts passendes gefunden.
Der Import sollte in etwa so aussehen:
Ich wähle die csv Datei aus , setzte ein Haken ob die csv - Datei einen Kopf besitzt, wenn ja werden die Header informationen ausgelesen und in die entsprechenden Comboboxen geschrieben die ich verwende um die Spaten der CSV - Datei den DB - Spalten zuzuordnen. Wenn das erledigt wurde , werden die Daten in die DB geschrieben .
Danke für eure Mühe
MB3rlin

Klaus01 11. Apr 2011 12:23

AW: CSV Import
 
Hallo,

Du könntest Dir mal die TStringList und da speziell, Delimiter, DelimitedText
und StrictDelimiter anschauen.

Grüße
Klaus

DeddyH 11. Apr 2011 12:27

AW: CSV Import
 
Zitat:

Zitat von Klaus01 (Beitrag 1094383)
Hallo,

Du könntest Dir mal die TStringList und da speziell, Delimiter, DelimitedText
und StrictDelimiter anschauen.

Das kann aber auch nur der Anfang sein, da ja zumindest theoretisch das Trennzeichen auch in den Nutzdaten vorkommen kann. Gab es da nicht ein Tool oder eine Klasse von alzaimar (oder war es shmia? Ich bin gerade nicht sicher), das solche Dinge berücksichtigt?

Metallicwar 11. Apr 2011 12:32

AW: CSV Import
 
hallo, ich arbeite des Öfteren auch mit CSV Dateien:
vielleicht hilft dir mein Import ein bisschen weiter:

Delphi-Quellcode:
procedure TfrmMain.importFromCSVfile(sFile: string);
var
  tfDatei: TextFile;
  sZInhalt: string;
  slWerte: TStringList;
  iZeile: Integer;
begin
  TRY
    TRY
      AssignFile(tfDatei, sFile);
      Reset(tfDatei);
      iZeile:= 0;
      while not EoF(tfDatei) do
      begin
        slWerte := TStringList.Create;
        Readln(tfDatei,sZInhalt);
        slWerte.Delimiter := ';';
        slWerte.StrictDelimiter := True;
        slWerte.DelimitedText := sZInhalt;

        Inc(iZeile); // erste Zeile ist der Kopf

        if IZeile > 1 then // alles größer als Zeile eins sind Daten
          begin
            if slWerte.Strings[2] = '' then
              slWerte.Strings[2] := IntToStr(0);
              tTabelle.Open;
              tTabelle.Append;
              tTabelle['Spaltenname1'] := StrToInt(slWerte.Strings[0]);
              tTabelle['Spaltenname2'] := slWerte.Strings[2];
              tTabelle.Post;
          end;
      end;
    EXCEPT
      MessageDlg('Est ist ein Fehler aufgetreten, der Prozess wird beendet.',mtError, [mbOK], 0);
    END;
  FINALLY
    CloseFile(tfDatei);
    tTabelle.Close;
  END;
end;

Luckie 11. Apr 2011 12:37

AW: CSV Import
 
Zitat:

Zitat von MB3rlin (Beitrag 1094382)
hallo delphi-praxis community.
Ich möchte gernen einen CSV import selber schreiben ohne eine Komponente dazu verwenden. Ich hab hier im Forum und auch mit anderen Suchmaschinen gesucht, leider nichts passendes gefunden.

Das kann nicht sein. Wenn ich nach csv suche findest du meinen CSVBetrachter und der ist mit Quellcode.

MB3rlin 11. Apr 2011 12:42

AW: CSV Import
 
Danke erstmal für die schnellen Antworten ich werd es gleich mal ausprobieren :)

Aurelius 11. Apr 2011 14:20

AW: CSV Import
 
Hi MB3rlin,

solltest du dich dazu entscheiden den Import wirklich selbst schreiben zu wollen würde ich dir auf jeden Fall folgende Spezifikationen ans Herz legen: http://tools.ietf.org/html/rfc4180

Da ich selbst schonmal eine Klasse zur Verarbeitung von CSV-Dateien geschrieben habe (allerdings in einer anderen Programmiersprache ) kann ich aus eigener Erfahrung sagen: so schwer wie es vielleicht auf den ersten Blick aussieht ist das gar nicht! Also hab ruhig Mut und versuche dich an einer eigenen Implementation, bevor du bereits fertigen Code nutzt :thumb:

Thom 11. Apr 2011 16:52

AW: CSV Import
 
Zitat:

Zitat von DeddyH (Beitrag 1094385)
Das kann aber auch nur der Anfang sein, da ja zumindest theoretisch das Trennzeichen auch in den Nutzdaten vorkommen kann.

Gibt's dafür nicht die Eigenschaft QuoteChar? :gruebel:

MB3rlin 19. Apr 2011 15:38

AW: CSV Import
 
Danke für eure Hilfe , anhand der Beispiele von Metallicwar und Luckie hat es geklappt :)

A.Griffin 28. Aug 2017 11:45

AW: CSV Import
 
Ich weiß, dass hier wär ein wenig necro aber ich hätte noch eine Frage. Was für eine Klasse ist bei Metallicwar "tTabelle"?


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:08 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