简体   繁体   English

将DataGridView导出为CSV文本文件

[英]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). 我编写了以下代码,但它不起作用(它在我的CSV文件中保存了愚蠢的东西)。 What can be wrong? 有什么不对? There are two columns in my DataGridView. 我的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 } DataGridViewTextBoxCel 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} DataGridViewTextBoxCel l { ColumnIndex=0, RowIndex=9 },DataGridViewTextBoxCell { ColumnIndex=1, RowIndex=9 } DataGridViewTextBoxCell { ColumnIndex=0, RowIndex=10 },DataGridViewTextBoxCell { ColumnIndex=1, RowIndex=10 } l {ColumnIndex = 0,RowIndex = 9},DataGridViewTextBoxCell {ColumnIndex = 1,RowIndex = 9} DataGridViewTextBoxCell {ColumnIndex = 0,RowIndex = 10},DataGridViewTextBoxCell {ColumnIndex = 1,RowIndex = 10}

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. .Net正在对每个单元格进行“ToString”,而不是它们的值。 This is the type of row.Cells[x] : http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewcell.aspx 这是row.Cells[x]的类型: http//msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewcell.aspx

Using the Value property will probably fix your problem: 使用Value属性可能会解决您的问题:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM