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
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
Versuchs mit Excel (oder OpenOffice). Damit kannst du csv importieren und, sofern die Standardfunktionen nicht reichen, mittels VBA auch was programmieren
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
Hi, sorry ich habe free Basic überlesen. Ob es dort eine split-Funktion gibt weiss ich leider nicht. Klaus
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.
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 :-)
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.
Wobei ja strenggenommen der Datensatztrenner ein Zeilenumbruch ist :->
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.
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?
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 ^_^
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.