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 😉
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
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 😉
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.
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
Cool, ich werds mal mit dieser Methode probieren,
Vielen Dank @ all 😉 🙂
---- >
Keine Signatur 😉