Laden...

Import von CSV Daten

Erstellt von axelfxxx vor 17 Jahren Letzter Beitrag vor 17 Jahren 5.790 Views
axelfxxx Themenstarter:in
139 Beiträge seit 2006
vor 17 Jahren
Import von CSV Daten

Hi @ all 😉

Ich möchte eine kleine aber FLEXIBLE Datenbank erstellen. Dazu muss ich Z.B. CSV-Daten importieren können. (Ich weis das Thema wurde schon mal etwas angeschnitten)

Meine Funktion, erstellt zuerst die Überschriften, und holt sich dann die Daten um sie dann alle zusammen in der DataGridView anzeigen zu lassen.

Funtion:

 

StreamReader sr = new StreamReader(filename, true);
                    foreach (string name in sr.ReadLine().Split(';'))
                    {
                        //Überschriften erzeugen
                        this.dataGridView1.Columns.Add(name, name);
                                                
                    }
                    
                    while (sr.Peek() >= 0)
                    {
                        string data = sr.ReadLine();
                        ArrayList arr = new ArrayList();
                        arr.Add(data);
                        foreach (string line in arr)
                        {
                            if (line != string.Empty)
                            {
                                string[] elements = line.Split(';');
                                // Einzelne Zeilen gefüllt mit Daten anzeigen
                                this.dataGridView1.Rows.Add(elements[1], elements[2], elements[3], elements[4]);
                                
                            }
                        } 
                      
                    }
                }

Doch jetzt ist die Frage:
Wie kann ich den bitteschön die einzelnen Zeilen abfragen!? Ich weis doch vorher nicht (in Bezug auf string[] elements ) wieviel elemente (Zeilen) die CSV Datei enthält. Ich probier mich daran schon fast ne Woche aber nix hilft 😦

MFG
Alex

---- >
Keine Signatur 😉

3.825 Beiträge seit 2006
vor 17 Jahren

Mit sr.ReadLine() liest Du eine Zeile.

Wieviele Zeilen deine Datei hat kannst Du beim Lesen nicht ermitteln, das weisst Du erst wenn alle Zeilen gelesen sind.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

axelfxxx Themenstarter:in
139 Beiträge seit 2006
vor 17 Jahren

Danke erstmal, aber das weiß ich ja.

Doch dann ist doch das Problem, wie man vorher herausbekommt, wieviel Zeilen eine CSV Datei hat !? Hast du da einen Tip für mich ?

MFG
Alex

---- >
Keine Signatur 😉

F
10.010 Beiträge seit 2004
vor 17 Jahren

Da gibt es keine Möglichkeit.

Darum, warum liest Du die Datei nicht in eine Collection oder gleich in eine
DataTable ein, die brauchst Du dann nur noch an dein DGV binden.

axelfxxx Themenstarter:in
139 Beiträge seit 2006
vor 17 Jahren

Ok, dann probier ichs mal so

---- >
Keine Signatur 😉

S
8.746 Beiträge seit 2005
vor 17 Jahren
B
1.529 Beiträge seit 2006
vor 17 Jahren

System.IO.File.ReadAllLines();

3.825 Beiträge seit 2006
vor 17 Jahren

Ich finde die Vorgehensweise hängt stark von der maximalen Größe der CSV-Datei ab.

Bei kleinen Dateien würde ich

string[] zeile = File.ReadAllLines(dat, Encoding.GetEncoding(1252));

nehmen. Die Anzahl der Zeilen steht dann in

zeile.Length;

.

Bei großen Dateien kann es dann passieren dass die Applikation 10 min. nicht reagiert. In diesem Fall würde ich zeilenweise einlesen und ab und zu was anzeigen.

Wenn man sich am Anfang die Dateigröße holt und die Zeichen die man liest mitzählt kann man sogar eine Progressbar mit %-Zahl anzeigen.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

axelfxxx Themenstarter:in
139 Beiträge seit 2006
vor 17 Jahren

Cool, ich werds mal mit dieser Methode probieren,

Vielen Dank @ all 😉 🙂

---- >
Keine Signatur 😉