Laden...

DataTable in CSV einlesen (Spaltenweise)

Erstellt von Manda vor 11 Jahren Letzter Beitrag vor 11 Jahren 3.099 Views
M
Manda Themenstarter:in
5 Beiträge seit 2010
vor 11 Jahren
DataTable in CSV einlesen (Spaltenweise)

Hallo,

ich möchte aus einem DataTable die Elemente auslesen und in eine CSV speichern.


 public static void writeCSV(DataTable _dt, String _sFilePath)
        {
            StreamWriter sw = new StreamWriter(_sFilePath, false);
            int iCol = _dt.Columns.Count;
                        
            for (int i = 0; i < iCol; i++)
            {
                sw.Write(_dt.Columns[i]);

                if (i < iCol - 1)
                {
                    sw.Write(","); //HIER MUSS WOHL WAS VERÄNDERT WERDEN
                }                
            }
            
            sw.Write(sw.NewLine);
....

Er liest es auch ein, aber packt alles in eine Spalte. Ich möchte es gerne Spaltenweise auslesen.
Bsp.:
Im DataTable: ID Name Desc Sonstiges
Beim einlesen: ID,Name,Desc,Sonstiges

Ich versuche die Einträge pro Spalte einzulesen. Hoffe ich konnte das Problem erklären.
Danke schön.

Lg
manda

B
387 Beiträge seit 2005
vor 11 Jahren

Hi,

mit was ließt du denn die CSV-Datei ein? Mit Excel?

Im CSV-Format trennt man normalerweise mit ";" und nicht mit ",", eventuell ist ja das schon das Problem.

Gruß
Roland

106 Beiträge seit 2011
vor 11 Jahren

Hallo Manda,

bei arbeiten mit CSV Dateien kann ich dir nur FileHelpers ans Herz legen. Ich weiß zwar nicht was für Daten du in der CSV speichern willst. Aber wenn du versuchst die CSV Datei wieder ein zu lesen, wirst du ansonsten wahrscheinlich sehr schnell auf probleme stoßen wenn einzelne Felder Zeilenumbrüche beeinhalten.

Mfg
Rabban

C
224 Beiträge seit 2009
vor 11 Jahren

Hi Manda,

Dein Problem liegt wohl wo anders, denn Dein Code sieht soweit gut aus. Siehe Test:


        private void Test()
        {
            string[] columns = new string[] { "Hallo", "Welt", "123" };
            int iCol = columns.Length;

            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < iCol; i++)
            {
                sb.Append(columns[i]);

                if (i < iCol - 1)
                {
                    sb.Append(","); //Sieht gut aus
                }
            }
            MessageBox.Show(sb.ToString());// "Hallo,Welt,123"
        }

Zeige mal die Cloumns-Werte und Dein Ergebnis (Bzw. Teil davon).
Gruß, CoLo