Anfängerprobleme csv Datein einlesen

Gast #1583599
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
Gast #1583824
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
#1586066
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 :-)
Persönliche Seite #1586152
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.
Gast #1586164
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?
(Firma: Privat) #1587610
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren