Dumbo
Dumbo

Reputation: 14132

Exporting DataGridView to a CSV text file

I wrote the following code, but it does not work (It saves stupid things in my CSV file). What can be wrong? There are two columns in my DataGridView.

var strValue = new StringBuilder();

foreach(DataGridViewRow row in dataGridView1.Rows)
{
    strValue.AppendLine(row.Cells[0] + "," + row.Cells[1]);
}

string strFile = Properties.Settings.Default.AutoCompleteFile; //File Path

if (!string.IsNullOrEmpty(strValue.ToString()))
{
    File.WriteAllText(strFile, strValue.ToString(), Encoding.UTF8);
}

This is the result I get in the saved file:

DataGridViewTextBoxCell { ColumnIndex=0, RowIndex=0 },DataGridViewTextBoxCell { ColumnIndex=1, RowIndex=0 } DataGridViewTextBoxCell { ColumnIndex=0, RowIndex=1 },DataGridViewTextBoxCell { ColumnIndex=1, RowIndex=1 } DataGridViewTextBoxCell { ColumnIndex=0, RowIndex=2 },DataGridViewTextBoxCell { ColumnIndex=1, RowIndex=2 } DataGridViewTextBoxCell { ColumnIndex=0, RowIndex=3 },DataGridViewTextBoxCell { ColumnIndex=1, RowIndex=3 } DataGridViewTextBoxCell { ColumnIndex=0, RowIndex=4 },DataGridViewTextBoxCell { ColumnIndex=1, RowIndex=4 } DataGridViewTextBoxCell { ColumnIndex=0, RowIndex=5 },DataGridViewTextBoxCell { ColumnIndex=1, RowIndex=5 } DataGridViewTextBoxCell { ColumnIndex=0, RowIndex=6 },DataGridViewTextBoxCell { ColumnIndex=1, RowIndex=6 } DataGridViewTextBoxCell { ColumnIndex=0, RowIndex=7 },DataGridViewTextBoxCell { ColumnIndex=1, RowIndex=7 } DataGridViewTextBoxCell { ColumnIndex=0, RowIndex=8 },DataGridViewTextBoxCell { ColumnIndex=1, RowIndex=8 } DataGridViewTextBoxCell { ColumnIndex=0, RowIndex=9 },DataGridViewTextBoxCell { ColumnIndex=1, RowIndex=9 } DataGridViewTextBoxCell { ColumnIndex=0, RowIndex=10 },DataGridViewTextBoxCell { ColumnIndex=1, RowIndex=10 }

Upvotes: 1

Views: 3793

Answers (1)

Arbiter
Arbiter

Reputation: 1024

When you call this:

strValue.AppendLine(row.Cells[0] + "," + row.Cells[1]);

.Net is doing a "ToString" on each of those cells, not their values. This is the type of row.Cells[x]: http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewcell.aspx

Using the Value property will probably fix your problem:

strValue.AppendLine(row.Cells[0].Value + "," + row.Cells[1].Value);

Upvotes: 4

Related Questions