Hallo
Ich schreibe derzeit ein Programm, welches Daten aus einer Oracle Datenbank holt und diese dann in einem DataGridView anzeigt.
Per klick auf einen Button kann dieses DataGrid als CSV-Datei exportiert werden.
Das Problem jedoch ist, mehrere male, habe ich Zeilen die die selbe ID haben, aber unterschiedliche werte.
<-- So sieht es im moment aus.
<-- So sollte es aussehen
Ich habe dabei an eine Foreach-Schleife gedacht, wo abgefragt wird, ob eine ID mehrfach enthalten ist und wenn ja die Daten dann zusammengeschoben werden und mit einem "," getrennt werden.
Habe da aber leider eher wenig Erfahrung
Das ist der Quellcode bisher zum Exportieren:
Ich schreibe derzeit ein Programm, welches Daten aus einer Oracle Datenbank holt und diese dann in einem DataGridView anzeigt.
Per klick auf einen Button kann dieses DataGrid als CSV-Datei exportiert werden.
Das Problem jedoch ist, mehrere male, habe ich Zeilen die die selbe ID haben, aber unterschiedliche werte.
<-- So sieht es im moment aus.
<-- So sollte es aussehen
Ich habe dabei an eine Foreach-Schleife gedacht, wo abgefragt wird, ob eine ID mehrfach enthalten ist und wenn ja die Daten dann zusammengeschoben werden und mit einem "," getrennt werden.
Habe da aber leider eher wenig Erfahrung
Das ist der Quellcode bisher zum Exportieren:
C#-Quellcode
- private void DataGridInCSVExport(object sender, EventArgs e)
- {
- if (dataGridViewErgebnis.Rows.Count == 0)
- {
- return;
- }
- StringBuilder stringBuilder = new StringBuilder();
- string spaltenKopf = "";
- for (int i = 0; i < dataGridViewErgebnis.Columns.Count; i++)
- {
- spaltenKopf += dataGridViewErgebnis.Columns[i].Name + ";";
- }
- stringBuilder.Append(spaltenKopf + Environment.NewLine);
- foreach (DataGridViewRow dataGridViewRow in dataGridViewErgebnis.Rows)
- {
- if (!dataGridViewRow.IsNewRow)
- {
- for (int c = 0; c < dataGridViewRow.Cells.Count; c++)
- {
- //Eigentlich müsste er doch genau hier das machen... macht es aber nicht :/
- stringBuilder.Append(dataGridViewRow.Cells[c].FormattedValue + ";");
- }
- stringBuilder.Append(Environment.NewLine);
- }
- }
- SaveFileDialog saveFileDialog = new SaveFileDialog();
- saveFileDialog.Filter = "CSV files (*.csv)|*.csv";
- if (saveFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
- {
- using (System.IO.StreamWriter sw = new System.IO.StreamWriter(saveFileDialog.FileName, false, Encoding.UTF8))
- {
- sw.WriteLine(stringBuilder.ToString());
- MessageBox.Show("CSV file saved.");
- }
- }
- }