Problem beim Erstellen einer Textdatei

joe81

Grünschnabel
Hallo zusammen.

Ich habe ein Problem mit folgenden Code:

Code:
        private void SaveGridToCSV()
        {
            string strExport = "";
            foreach (DataGridViewRow dr in dataGridView1.Rows)
            {
                foreach (DataGridViewCell dc in dr.Cells)
                {
                    if (dc.Value != null)
                    {
                        strExport += dc.Value.ToString() + delimiter;
                    }
                }
                strExport += Environment.NewLine.ToString();
            }
            strExport = strExport.Substring(0, strExport.Length - 3) + Environment.NewLine.ToString();
            TextWriter tw = new StreamWriter(@"C:\ERDI\03_CsvDaten\ERDI" + "_" + PLZ_Betriebsstelle + "_" + Personalnummer + "_" + Dienst + "_" + Datum + ".txt");
            tw.Write(strExport);
            tw.Close();
        }

Grundsätzlich funktioniert er einwandfrei. Nur leider setzt er am Ende jeder Zeile ein ";" (delimiter). Kann man das irgendwie unterbinden. Wenn am Ende ein Separator steht, so wird beim nächsten Öffnen des Files eine Spalte zuviel angezeigt. Was ja auch logisch ist. Nur will ich diese ja nicht.

Hat jemand eine IDEE.

MFG Joe
 

Nico Graichen

Erfahrenes Mitglied
Hi

Dann solltest du über die Zellen mit einer Zählschleife iterieren und dabei prüfen, ob du grad die letzte Zelle schreibst. Wenn dies nicht der Fall ist, dann den delimiter schreiben.
 

joe81

Grünschnabel
Hallo Nico

Du bist eine riesen Hilfe. Deine Idee umgesetzt:
Code:
        private void SaveGridToCSV()
        {
            string strExport = "";
            foreach (DataGridViewRow dr in dataGridView1.Rows)
            {
                int i = 0;

                foreach (DataGridViewCell dc in dr.Cells)
                {
                    if (/*dc.Value != null*/ i <=31)
                    {
                        strExport += dc.Value.ToString() + delimiter;
                        i++;
                    }
                    else
                    {
                        strExport += dc.Value.ToString();
                    }
                }
                strExport += Environment.NewLine.ToString();
            }
            strExport = strExport.Substring(0, strExport.Length - 3) + Environment.NewLine.ToString();
            TextWriter tw = new StreamWriter(@"C:\ERDI\03_CsvDaten\ERDI_1" + "_" + PLZ_Betriebsstelle + "_" + Personalnummer + "_" + Dienst + "_" + Datum + ".txt");
            tw.Write(strExport);
            tw.Close();
        }

Nun schreibt es in der letzten Zelle kein Semikolon mehr.

Ich bedanke mich für den Tipp und wünsche eine gute Zeit.

MFG Joe