将选择从DataGrid导出到.csv

时间:2017-10-17 06:50:17

标签: c# wpf csv datagrid

更具体的问题:Export DataBase (.mdb / .accdb) to .csv

我是数据网格的新手,需要导出标记(选中)的特定行。

我无法找到一种简单的方法来仅导出所选字段。

现在代码没有选择:

StringBuilder sb = new StringBuilder();
IEnumerable<string> columnNames = DataSet_DB.Tables[0].Columns.Cast<DataColumn>().
        
sb.AppendLine(string.Join(";", columnNames));

foreach (DataRow row in DataSet_DB.Tables[0].Columns)
{
    IEnumerable<string> fields = row.ItemArray.Select(field => field.ToString());
    sb.AppendLine(string.Join(";", fields));
}

File.WriteAllText(SFD.FileName, sb.ToString());

2 个答案:

答案 0 :(得分:1)

您可以使用DataGridView.SelectedRows集合获取所选行。如果您的DataGridView只允许选择一个,请查看我的样本。

  

DataGridView.SelectedRows获取由...选择的行的集合   用户。

样品

if (dataGridView1.SelectedRows.Count != 0)
{
    DataGridViewRow row = this.dataGridView1.SelectedRows[0];
    row.Cells["ColumnName"].Value
}

更多信息:

export specific columns

答案 1 :(得分:0)

在将所需属性SelectionMode设置为FullRowSelect后,您应该遍历DataGrid1.SelectedRows属性。然后每个网格行都有一个名为DataBoundItem的属性,该属性引用用于填充行的对象 在您的情况下,此对象似乎是一个DataTable,因此您可以返回DataRow,首先将DataBoundItem转换为DataRowView,然后从那里获取DataRow。

foreach (DataGridViewRow gridrow in dataGrid1.SelectedRows)
{
    DataRow row = ((gridrow.DataBoundItem) as DataRowView).Row
    IEnumerable<string> fields = row.ItemArray.Select(field => field.ToString());
    sb.AppendLine(string.Join(";", fields));
}