如何将DataGridView中的行导出到txt文件

时间:2016-02-22 21:13:10

标签: c# winforms datagridview export

我可以在DataGridView中选择一行并将其导出到一个名为DataGridView列的.txt文件

目前我有一个按钮将所有数据导出到.txt gridview,这里是代码

private void button2_Click(object sender, EventArgs e)
    {   
        if (!Directory.Exists(@"D:\Carpeta"))
        {
            Directory.CreateDirectory(@"D:\Carpeta");
        }

        TextWriter sw = new StreamWriter(@"D:\Carpeta\Archivo.txt");
        int rowcount = TablaDatos.Rows.Count;
        for(int i = 0; i < rowcount -1; i++)
        {
            sw.WriteLine(TablaDatos.Rows[i].Cells[0].Value.ToString()+"\t"
                         +TablaDatos.Rows[i].Cells[1].Value.ToString()+"\t"
                          +TablaDatos.Rows[i].Cells[2].Value.ToString()+"\t"
                           +TablaDatos.Rows[i].Cells[3].Value.ToString()+"\t");
        }
        sw.Close();
        MessageBox.Show("Datos Exportados correctamente");    
    }

我需要逐行导出,为每一行创建一个txt而不是整个DataGridView

enter image description here

2 个答案:

答案 0 :(得分:0)

你去吧。

private void button2_Click(object sender, EventArgs e) {
    if (!Directory.Exists(@"D:\Carpeta"))
        Directory.CreateDirectory(@"D:\Carpeta");

    for (int i = 0; i < TablaDatos.RowCount; ++i) {
        var line = string.Join("\t", TablaDatos.Rows[i].Cells.Cast<DataGridViewCell>());
        File.WriteAllText(@"D:\Carpeta\" + $"Archivo-row-{i}.csv", line);
    }

    MessageBox.Show("Datos Exportados correctamente");
}

答案 1 :(得分:0)

您可以使用以下任一选项:

选项1

将网格的MultiSelect属性设置为false,然后选择所需的行,然后您可以使用DataGridView.GetClipboardContent。此方法检索表示所选单元格内容的格式化值,以便复制到剪贴板。结果以制表符分隔:

grid.MultiSelect = false;
grid.Rows[i].Selected = true;
grid.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithoutHeaderText;
var text = grid.GetClipboardContent().GetText();

选项2

您可以通过加入每个单元格的格式化值来获取索引i处的行的文本表示形式。结果可以由您需要的任何字符分隔:

var text = string.Join("\t", grid.Rows[i].Cells.Cast<DataGridViewCell>()
                                 .Where(x=> x.Visible).Select(x=> x.FormattedValue));

将文字保存到文件

您可以使用File.WriteAllText方法:

System.IO.File.WriteAllText(filePath, text);