Ausgehend von einer csv-Datei sollen Daten in ein DataGrid und in ein Chart übernommen werden.
Benötigte Elemente:
Spalten in DataGridView benennen…
//Bibliothek using System.IO; //muss man einbinden string[] lines; //global definiert, um in jeder Methode Zugriff zu haben //Klick auf die TextBox private void tb_Pfad_MouseClick(object sender, MouseEventArgs e) { //Filtert beim Dialog nur csv-Files: Beschreibung | Filter openFileDialog1.Filter = "csv-Files (*.csv)|*.csv|Text-Files (*.txt)|*.txt|Alles|*.*"; // Achtung! Keine Leerzeichen im Filter! //Prüfen, ob das Öffnen und das Auswählen einer Datei funktioniert hat if ( openFileDialog1.ShowDialog() == DialogResult.OK) { tb_Pfad.Text=openFileDialog1.FileName; } } //Klick auf den Button private void bt_readCSVData_Click(object sender, EventArgs e) { //Read all Lines ---> alle Zeilen der CSV-Datei kann eingelesen werden. //Man benötigt ob die Bibliothek //using System.IO; string[] colums; //Alle Zeilen einlesen lines = File.ReadAllLines(tb_Pfad.Text); //Methode liefert alle Zeilen in einem String-Array zurück. Jeder Eintrag ist eine Zeile Console.Writeline(lines[0]) //Ausgabe der ersten Zeile Console.Writeline(lines[0]) //Ausgabe der zweiten Zeile //String in einzelne Spalten auftrennen //colums = lines[0].Split(';') //Seperator ist Semikolon //liefert ein Array der 1. Zeile. //Console.WriteLine("Gemeinde: " + colums[4]); // Gemeinde //Einfügen in ComboBox //cb_location.Items.Add(colums[4]); //Fügt den Eintrag in der ComboBox dazu //Von der ersten bis zur letzten Zeile for(int i=i; i<lines.Length; i++) //Schleife läuft von 1 weg, da Überschrift nicht dabei sein soll { //Zeile aufteilen in mehrere Spalten anhand des Strichpunktes colums = lines[i].Split(';'); Console.WriteLine("Gemeinde: " + columns[4]); //Überprüfen, ob die Gemeinde bereits eingefügt wurde if(cb_location.Items.Contains(colums[4]==false) { //Füge Gemeinde nur ein, falls sie noch nicht vorhanden ist. tb_location.Items.Add(colums[4]); } } private void cb_location_SelectedValueChanged(object sender, EventArgs e) { Console.WriteLine("Gemeinde wurde selektiert" + cb_location.SelectedItem.ToString()); //ohne .ToString() kommt ein Objekt zurück! //Vor dem Hinzufügen neuer Werte müssen die alten gelöscht werden. dataGridView1.Rows.Clear(); chart1.Series[0].Points.Clear(); //Benennen der Legende im Chart chart1.Series[0].Name = cb_location.SelectedItem.ToString(); //Achsen benennen chart1.ChartAreas[0].AxisX.Title = "Year"; chart1.ChartAreas[0].AxisY.Title = "Population"; //Vertikale Beschriftung der x-Achse chart1.ChartAreas[0].AxisX.LabelStyle.Angle = -90 //jedes Jahr wird angezeigt. chart1.ChartAreas[0].AxisX.Interval = 1; //Statt Balken Fläche: chart1.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Area; // chart1.Series[0].IsValueShownAsLabel = true; //Werte oberhalb des //Linien chart1.ChartAreas[0].AxisX.MajorGrid.LineDashStyle = System.Windows.Forms.DataVisualization.Charting.ChartDashStyle.Dot; //Optionale Einstellungen für das Chart chart1.ChartAreas[0].AxisX.ScaleView.Zoomable = true; chart1.ChartAreas[0].AxisY.ScaleView.Zoomable = true; chart1.ChartAreas[0].CursorX.IsUserEnabled = true; chart1.ChartAreas[0].CursorY.IsUserEnabled = true; chart1.ChartAreas[0].CursorX.IsUserSelectionEnabled = true; chart1.ChartAreas[0].CursorY.IsUserSelectionEnabled = true; //Datentyp der x-Achse festlegen chart1.Series[0].XValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Date; //Befüllen des DataGrids //Alle Zeilen durchsuchen, falls die Gemeinde gleich der ausgewählten Gemeinde ist, //das Jahr und die Anzahl der Einwohner in das DataGrid schreiben for (int i=1; i<lines.Length;i++) { string gemeinde = ""; gemeinde=lines[i].Split(';')[4]; //Gemeinde aus der jeweiligen Zeile rausgeholt //Wenn das in der i.ten Zeile die ausgewählte Gemeinde ist... if(gemeinde == cb_location.SelectedItem.ToString()) { //Extrahieren des Jahres und der Einwohnerzahl string jahr = lines[i].Split(';')[6]; string einwohnerzahl = lines[i].Split(';')[5]; Console.WriteLine("Einwohnerzahl: " + einwohnerzahl); Console.WriteLine("Jahr " + jahr); //Hinzufügen zum DataGrid und Chart dataGridView1.Rows.Add(jahr, einwohnerzahl); //Jahr als Datum parsen chart1.Series[0].Points.AddXY(DateTime.Parse(jahr+"01-01"), intParse(einwohnerzahl)); } } //Sortieren der Werte im DataGrid dataGridView.Sort(dataGridView.Columns[0],ListSortDirection.Ascending); //Sortieren der Werte im Chart chart1.Series[0].Sort(PointSortOrder.Ascending,"X"); }