C# DataGridView

05/21/2013 15:33 .Junior#1
Hallo Com

Ich möchte gerne alle Daten aus meiner DataGridView in eine CSV-Datei speichern
Wie ist dies möglich?

MFG
05/21/2013 15:35 Syc#2
In dem du dir die Grundlagen aneignest?

Wenn das zu schwer ist, dann [Only registered and activated users can see links. Click Here To Register...]
05/21/2013 15:49 #SoNiice#3
Code:
StreamWriter sw = new StreamWriter(Server.MapPath("~/Grid.csv"), false);

DataTable dt = ((DataSet)grid1.DataSource).Tables[0];

int iColCount = dt.Columns.Count;
for (int i = 0; i < iColCount; i++)
{
	sw.Write(dt.Columns[i]);
	if (i < iColCount - 1)
	{
		sw.Write(",");
	}
}
sw.Write(sw.NewLine);

foreach (DataRow dr in dt.Rows)
{
	for (int i = 0; i < iColCount; i++)
	{
		if (!Convert.IsDBNull(dr[i]))
		{
			sw.Write(dr[i].ToString());
		}
		if (i < iColCount - 1)
		{
			sw.Write(System.Globalization.CultureInfo.CurrentCulture.TextInfo.ListSeparator);
		}
	}
	sw.Write(sw.NewLine);
}
sw.Close();
Der Code ist nicht von mir und ungetestet, sollte aber gehen.
05/21/2013 16:07 .Junior#4
Quote:
Originally Posted by SoNiice View Post
Code:
StreamWriter sw = new StreamWriter(Server.MapPath("~/Grid.csv"), false);

DataTable dt = ((DataSet)grid1.DataSource).Tables[0];

int iColCount = dt.Columns.Count;
for (int i = 0; i < iColCount; i++)
{
	sw.Write(dt.Columns[i]);
	if (i < iColCount - 1)
	{
		sw.Write(",");
	}
}
sw.Write(sw.NewLine);

foreach (DataRow dr in dt.Rows)
{
	for (int i = 0; i < iColCount; i++)
	{
		if (!Convert.IsDBNull(dr[i]))
		{
			sw.Write(dr[i].ToString());
		}
		if (i < iColCount - 1)
		{
			sw.Write(System.Globalization.CultureInfo.CurrentCulture.TextInfo.ListSeparator);
		}
	}
	sw.Write(sw.NewLine);
}
sw.Close();
Der Code ist nicht von mir und ungetestet, sollte aber gehen.
Bei mir erfolgt in der 2 Zeile eine NullReferenceException
Wäre es hilfreich wenn ich dir ein Sceen/Code hinzufüge?
05/21/2013 17:49 Requi#5
Code:
        Dim fs As New FileStream("Schülerliste.csv", FileMode.Create)
        Dim sw As New StreamWriter(fs)
        For Each item In namensliste.Items
            item &= ";"
            sw.Write(item)
        Next
        sw.Close()
Von mir selber geschrieben. Ist VB, aber es gibt online genug Übersetzer ;)
05/22/2013 08:58 SwarN#6
Quote:
Originally Posted by SoNiice View Post
Code:
StreamWriter sw = new StreamWriter(Server.MapPath("~/Grid.csv"), false);

DataTable dt = ((DataSet)grid1.DataSource).Tables[0];

int iColCount = dt.Columns.Count;
for (int i = 0; i < iColCount; i++)
{
	sw.Write(dt.Columns[i]);
	if (i < iColCount - 1)
	{
		sw.Write(",");
	}
}
sw.Write(sw.NewLine);

foreach (DataRow dr in dt.Rows)
{
	for (int i = 0; i < iColCount; i++)
	{
		if (!Convert.IsDBNull(dr[i]))
		{
			sw.Write(dr[i].ToString());
		}
		if (i < iColCount - 1)
		{
			sw.Write(System.Globalization.CultureInfo.CurrentCulture.TextInfo.ListSeparator);
		}
	}
	sw.Write(sw.NewLine);
}
sw.Close();
Der Code ist nicht von mir und ungetestet, sollte aber gehen.

Der Code setzt vorraus, dass der Anwender ein DataSet verwendet.(Was er offensichtlich nicht tut)

Man kann aber auch wirklich simpel und einfach einen StreamWriter verwenden und dann einfach mit For Each die Zeilen des Grids durchgehen und nach jeder gelesenen Zeile eine Textzeile schreiben.

Ich könnte natürlich jetzt für dich googeln wie die Syntax aussieht, aber ehrlich? Dafür bin ich zu faul :).

Genug Anregungen kriegst der Threadersteller aber eigentlich trotzdem in deinem Beispiel :).
05/22/2013 12:06 Requi#7
Quote:
Originally Posted by SwarN View Post
Der Code setzt vorraus, dass der Anwender ein DataSet verwendet.(Was er offensichtlich nicht tut)

Man kann aber auch wirklich simpel und einfach einen StreamWriter verwenden und dann einfach mit For Each die Zeilen des Grids durchgehen und nach jeder gelesenen Zeile eine Textzeile schreiben.

Ich könnte natürlich jetzt für dich googeln wie die Syntax aussieht, aber ehrlich? Dafür bin ich zu faul :).

Genug Anregungen kriegst der Threadersteller aber eigentlich trotzdem in deinem Beispiel :).
Oder er übersetzt meinen Code in C#.
05/22/2013 13:38 'Heaven.#8
Quote:
Originally Posted by Requι View Post
Oder er übersetzt meinen Code in C#.
Seit wann hat nen datagridview die property Items? :D

Ricky c&p aus alten projekten hilft nicht :p
05/22/2013 16:03 SwarN#9
Code:
            Dim Zeile As String
            Dim sw As New StreamWriter("testdatei.csv", False, System.Text.Encoding.Default)
            For Each row As DataGridViewRow In DataGridView.Rows

                Zeile = ""

                For Each cell As DataGridViewCell In row

                    Zeile &= cell.Value.ToString() & ";"

                Next

                sw.WriteLine(Zeile)

            Next
            sw.Close()
Nicht getestet und nur gemacht weil mir sau langweilig war!
(Projektanfang das Imports System.IO nicht vergessen)
05/22/2013 18:29 Requi#10
Quote:
Originally Posted by 'Heaven. View Post
Seit wann hat nen datagridview die property Items? :D

Ricky c&p aus alten projekten hilft nicht :p
Oh Fuck. Ist ja noch die Listbox Methode. Ja. Das sollte man dann noch umschreiben ^^
05/24/2013 13:22 .Junior#11
Habs jz auch hinbekommen
hab die DataGridView Zellenweise ausgelesen