Spalten in csv-Datei

Hallo!

Hab ein kleines Problem und hab mich schon blöd gegoogelt und finde leider trotzdem nichts …

Also ich hab eine csv-Datei mit mehreren Spalten. Ich möchte nun nur den Wert aus Spalte 3 für jede Zeile auslesen und wenn möglich in einem array speichern.

Auslesen und die Tabs mit „;“ ersetzen tu ich in C# so:

string filename = „C:\…\csv.csv“;
string[] lines = File.ReadAllLines(filename);

for (int i = 0; i

Hi,
üblicherweise direkt mit

data\_tab[2]

http://openbook.galileocomputing.de/visual_csharp_20…

Gruss
Joey

Danke!!

Kann mir zwar nicht ganz erklären wieso … aber es geht ^^

LG,
EV*A

Hallo!
Ach komm - so schwer ist das doch wirklich nicht.
Anscheinend hast Du auch das nicht verstanden, was Du ergoogelt hast.
Weisst Du, was ein Array ist? Wenn nein -> Nachlesen.
Bei .NET werden Arrays ab 0 indiziert, damit bekommst Du an Index [2] das dritte Element.

Bitte arbeite erst mal ein Buch durch (z.B. das gepostete OpenBook) - das wird Deine weiteren Programmierversuche erheblich weniger frustierend gestalten als das Zusammenkopieren von Code, den Du im Netz findest.

Gruß,
Martin

Hallo!

Also ich programmier jetzt schon einige Jahre und JA, ich weiß was ein Array ist ^^
Das ist allerdings meine erste Arbeit mit csv-Dateien. Von dem her hat es mich gewundert, dass alle Werte einer Spalte in nur einem Array-Eelement drinnen sind - ich hab nicht gewusst, dass csv-Dateien so reingeschrieben werden – jetz weiß ichs :smile:

In meiner Vorstellung hätt das iwie ein mehrdimensionaler Array gespeichert … gut zu wissen, dass es nicht so ist!

Danke für die Antworten! :wink:

Hallo nochmal!

[…]
Das ist allerdings meine erste Arbeit mit csv-Dateien. Von dem
her hat es mich gewundert, dass alle Werte einer Spalte in nur
einem Array-Eelement drinnen sind - ich hab nicht gewusst,
dass csv-Dateien so reingeschrieben werden – jetz weiß ichs

)

Der Code geht doch zeilenweise über die Daten drüber, wobei die einzelnen Zeilen in einem Array vorliegen.
Jede Zeile wird dann über das Split() wiederum in ein Array von Strings zerlegt.
Du hast also letztlich schon ein 2-dimensionales Array, es wird halt immer nur eine Zeile bearbeitet.

Dass Deine CSV-Bearbeitung auf die Nase fällt, wenn ein anderes Trennzeichen als ‚;‘ verwendet wird oder einzelne Werte (oder alle) in Anführungszeichen geklammert sind (was dann erforderlich ist, wenn ein Wert das Trennzeichen selbst enthalten soll), ist Dir schon klar, oder?

Hier: http://www.codeproject.com/Articles/9258/A-Fast-CSV-… findest Du einen korrekten (und schnellen) CSV-Reader.

Gruß,
Martin

Hallo!

Ja das mit den csv-Dateien ist mir inzwischen einigermaßen klar (glaub ich^^) :smile:

Allerdings ist es mir inzwischen gelungen, da ich ja eh nur die eine Spalte brauche, mir eine neue csv-Datei zu machen, die nur die eine Spalte enthält - und die ist ja jetzt in einem Array abgespeichert … doch nun ist ein neues Problem da …

Ich möchte jetzt die Spalte in mehrere (16) gleichgroße Arrays aufteilen (das mach ich mit der Array.Copy-Methode). Diesen Vorgang hab ich in einer eigenen Methode definiert.
Jetzt möchte ich in der Main() über eine For-Schleife 16 Arrays mit diesen neuen Werten befüllen.
Ich hab mir gedacht ich mach das am Besten mit einem verschachtelten Array:

string[] data = obj.einlesen();

string[][] pak_sum = new string[16][];

for (int i = 0; i

Nur die Ausgabe ist einfach 16x „System.String[]“ – und ich weiß echt nicht, was da jetzt nicht passt … das ist übrigens auch das erste mal, dass ich verschachtelte Arrays verwende :smile:

Schon mal Danke im Voraus – für Antworten und die Geduld^^

LG,
EV*A

Hallo!
Die Ausgabe ist korrekt - Du lässt Dir sechzehnmal pak_sum[i] ausgeben, wobei jedes pak_sum[i] ein String-Array ist, also „System.String[]“.

Wenn Du die Werte des Arrays angezeigt haben willst, musst Du irgendwie dafür sorgen, dass diese ausgegeben werden, bspw. über string.Join(" ", pak_sum[i]) die Arrayelemente in einen String zusammenhängen.

Gruß,
Martin

Hallo!

Danke für die Erklärung! Ist ja logisch, da ich ja quasi nur auf die „äußeren“ Elemente des Array zugreife.
Habs mal mit string.join versucht, hat jedoch nicht so wirklich geklappt :-S

Allerdings hab ich unter http://msdn.microsoft.com/en-us/library/2s05feca.aspx im Handbuch eine Lösung gefunden: einfach mit zwei verschachtelten for-Schleifen den Array mit pak_sum[i][j] ansprechen - so greife ich dann auf die „inneren“ Elemente auch zu :smile:

(Hoffentlich krieg ich das Programm bald fertig …)

Danke noch mal!!

LG,
EV*A