Forum: PC-Programmierung Anfängerprobleme csv Datein einlesen


von Horst (Gast)


Lesenswert?

Hallo,

ich habe eine CSV Datei in folgender Ausführung.
wert1,wert2,wert3,wert4
wert1,wert2,wert3,wert4
....usw.

ich möchte diese Datei jetzt einlesen. Da ich fast gar nicht 
programmieren kann, bevorzuge ich immer Basic :-)
Wie kriege ich also die Daten in mein Programm eingelesen. Könnte mir 
hier jemand einen kurzen Codeauszug geben, bzw. einige Links die mir 
weiterhelfen.

Meistens nutze ich free Basic oder ähnliche opensource Compiler.

vielen Dank
Horst

von Joachim (Gast)


Lesenswert?

Hallo

Gockel ist dein Freund. Schau z.B. mal hier:
http://de.wikibooks.org/wiki/FreeBasic:_Dateien

Falls Gockel nicht verfügbar ist, hilft die althergebrachte Methode:
Kauf dir ein Buch.

Gruß
Joachim

von Tom E. (tkon)


Lesenswert?

Versuchs mit Excel (oder OpenOffice). Damit kannst du csv importieren 
und, sofern die Standardfunktionen nicht reichen, mittels VBA auch was 
programmieren

von Klaus (Gast)


Lesenswert?

Hi,
in vb kannst Du die split-Funktion nehmen.
Beispiel:
1
  ..
2
3
  Dim aData() As String
4
  Dim InputString As String
5
6
  InputString  = "wert1,wert2,wert3,wert4"
7
  aData = Split(InputString, ",")
8
  ..

In dem Array >aData< sind dann die "Werte" als Teste abgelegt.
Die kannst Du dann weiterverarbeiten.

Dieses machst Du für jede Zeile in Deinem cvs-File.

Bye
Klaus

von Klaus (Gast)


Lesenswert?

Hi,
sorry ich habe free Basic überlesen.
Ob es dort eine split-Funktion gibt weiss ich leider nicht.
Klaus

von Niels K. (niels-k)


Lesenswert?

CSV-Dateien sind (so wie ich das beurteilen kann) aber in der Regel 
Messdaten, die binär gespeichert sind. Das bedeutet, dass man Kenntniss 
über das Datenformat haben muss. Die Grundlage zu diese Aussage ist die 
Vermutung, dass die Daten von einer Montageanlage stammen.

von Klaus W. (mfgkw)


Lesenswert?

Nein.

CSV-Dateien sind Textdateien.

Hat man in Excel beispielsweise folgende Tabelle:
1
+-----+-----+-----+--------+-----+
2
| 132 | 456 | 789 | abcdef | 147 |
3
+-----+-----+-----+--------+-----+
4
|  33 |   1 |   2 |    Oma | 888 |
5
+-----+-----+-----+--------+-----+
6
| 1.23|  77 |  22 |    Opa |   1 |
7
+-----+-----+-----+--------+-----+
, dann sieht die CSV-Datei etwa so aus:
1
132,456,789,"abcdef",147
2
33,1,2,"Oma",888
3
1.23,77,22,"Opa",1
Das sind keine Binärdaten (sonst könnte MS ja selbst nicht damit
umgehen :-)

von Niels K. (niels-k)


Lesenswert?

Na dann ist es ja umso einfacher

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Niels Keller schrieb:
> Na dann ist es ja umso einfacher
Nicht unbedingt. Man muss dabei beachten das es immer einen Feldtrenner 
und einen Datensatztrenner gibt.

Angenommen der Feldtrenner sei " und der Datensatztrenner sei , dann ist 
folgendes eine gültige CVS Zeile:

"Hallo", "123.567", "In 0, nix", "hats ein Problem"

Jetzt wende auf diese Zeile mal ein Split mittels ',' an und du wirst 
sehen das du nicht das korrekte Ergebnis erhälts.

von Sven P. (Gast)


Lesenswert?

Wobei ja strenggenommen der Datensatztrenner ein Zeilenumbruch ist :->

von Heinz B. (Firma: Privat) (hbrill)


Angehängte Dateien:

Lesenswert?

Hab dir was angehängt, womit du
csv-Dateien mit 4 Spalten
mit einstellbarem Feldtrenner
einlesen kannst.

Evtl. genügt dir dieses kleine
Prog ja.

von Sven P. (Gast)


Lesenswert?

Heinz Brill schrieb:
> Hab dir was angehängt, womit du
> csv-Dateien mit 4 Spalten
> mit einstellbarem Feldtrenner
> einlesen kannst.
Wäre ein kurzer Quelltext da nicht angebrachter, als ein Programm aus 
unbekannter Herkunft mit unbekanntem Zweck?

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Sven P. schrieb:
> Wobei ja strenggenommen der Datensatztrenner ein Zeilenumbruch ist :->
Stimmt, es muss heißen Texttrenner, Feldtrenner und (bei mir nicht 
genutzt) Datensatztrenner. Das prinzip bleibt aber gleich ^_^

von Heinz B. (Firma: Privat) (hbrill)


Lesenswert?

Hatte das schnell mal mit PureBasic zusammen
gepinselt (www.PureBasic.de).
Für mich einer der besten und schnellsten
Basic-Compiler, aber ist nicht kostenlos.
Demoversionen gibt es trotzdem.
1
Global sfile.s, text.s, zeile.s, ftrenner.s
2
3
Procedure LeseDatei(sfile.s, trenner.s)
4
ClearGadgetItems(0) 
5
6
If OpenFile(0, sfile)
7
   Repeat
8
     text = ReadString(0)
9
     If text <> ""
10
        zeile = ReplaceString(text, trenner, Chr(10)) 
11
        AddGadgetItem(0, -1, zeile)
12
     EndIf    
13
   Until Eof(0) <> 0
14
   CloseFile(0)   
15
   MessageRequester("Anzahl Zeilen", Str(CountGadgetItems(0)) + " Zeilen gelesen !", 0)
16
EndIf 
17
EndProcedure
18
19
If OpenWindow(0, 100, 100, 500, 400, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
20
   ListIconGadget(0, 5, 5, 790, 300, "Wert 1", 100, #PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_GridLines|#PB_ListIcon_MultiSelect)
21
   AddGadgetColumn(0, 1, "Wert 2", 100)
22
   AddGadgetColumn(0, 2, "Wert 3", 100)
23
   AddGadgetColumn(0, 3, "Wert 4", 100)
24
   
25
   ButtonGadget(1, 5,  310, 60, 20, "Start")
26
   ButtonGadget(2, 160,310, 60, 20, "Ende")
27
   TextGadget(4, 5, 340, 100, 20, "Feldtrenner (, ;)")
28
   StringGadget(5, 105, 340, 40, 20, ",")
29
   
30
   quit = 0 
31
   ftrenner = ","
32
    
33
   Repeat
34
     Event = WaitWindowEvent()
35
     If Event = #PB_Event_Gadget And EventGadget() = 1
36
        sfile = OpenFileRequester("Datei öffnnen", "C:\meinecvs.csv", "Csv (*.csv)|*.csv", 0)
37
        If sfile
38
        ftrenner = GetGadgetText(5)
39
           If ftrenner
40
              LeseDatei(sfile, ftrenner.s)
41
           EndIf   
42
        Else
43
            MessageRequester("Fehler !", "Kein Quell - Ordner gewählt !", 0)   
44
        EndIf   
45
     EndIf
46
     If Event = #PB_Event_Gadget And EventGadget() = 2
47
      quit = 1
48
     EndIf
49
   Until Event = #PB_Event_CloseWindow Or quit = 1
50
 EndIf
51
52
End

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.