C#将DataGridView保存到文本文件

时间:2019-05-14 21:07:24

标签: c# datagridview export text-files export-to-text

我当前是第一次尝试使用datagridview,到目前为止,我已经设法完成了很多事情(例如导入文本文件),但是,在尝试将datagridview的内容保存到文本文件时遇到了麻烦

我当前得到的输出是:

    0,
 Cat,
 Yes,
10,
20,
30,
40,
50,
1,
 Dog,
 No,
10,
20,
30,
40,
50,

我希望导出看起来像这样:

0, Cat, Yes, 10, 20, 30, 40, 50
1, Dog, No, 10, 20, 30, 40, 50
etc.

这是我当前正在使用的代码:

using (TextWriter tw = new StreamWriter("example.txt"))
{
    for(int i = 0; i < dataGridView1.Rows.Count - 1; i++)
                {
                    for(int j = 0; j < dataGridView1.Columns.Count; j++)
                    {
                        tw.WriteLine($"{dataGridView1.Rows[i].Cells[j].Value.ToString()},");
                    }
                }
    }

这里有人可以帮助我解决这个问题吗?谢谢!

4 个答案:

答案 0 :(得分:3)

尝试在tw.Write()的{​​{1}}中进行以下更改:

tw.WriteLine()

答案 1 :(得分:1)

使用tw.Write()而不是tw.WriteLine()直到完成该行的最后一行以外的所有内容,然后对最后一列数据执行tw.WriteLine()以结束该行。

答案 2 :(得分:0)

那么,从DGV到文本文件?这就是我的方法。

private void button1_Click(object sender, EventArgs e)
        {
            //This line of code creates a text file for the data export.
            System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\\your_path_here\\sample.txt");
            try
            {
                string sLine = "";

                //This for loop loops through each row in the table
                for (int r = 0; r <= dataGridView1.Rows.Count - 1; r++)
                {
                    //This for loop loops through each column, and the row number
                    //is passed from the for loop above.
                    for (int c = 0; c <= dataGridView1.Columns.Count - 1; c++)
                    {
                        sLine = sLine + dataGridView1.Rows[r].Cells[c].Value;
                        if (c != dataGridView1.Columns.Count - 1)
                        {
                            //A comma is added as a text delimiter in order
                            //to separate each field in the text file.
                            //You can choose another character as a delimiter.
                            sLine = sLine + ",";
                        }
                    }
                    //The exported text is written to the text file, one line at a time.
                    file.WriteLine(sLine);
                    sLine = "";
                }

                file.Close();
                System.Windows.Forms.MessageBox.Show("Export Complete.", "Program Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (System.Exception err)
            {
                System.Windows.Forms.MessageBox.Show(err.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                file.Close();
            }
        }

答案 3 :(得分:0)

我不使用 C#,但经常使用这些论坛作为参考。我为工业应用开发接口。无论如何,最简单的方法是通过剪贴板。在 DGV 上使用 SelectAll() 方法,使用 Clipboard.SetDataObject() 方法将该 DGV 数据放入剪贴板,使用 File.WriteAllText() 和 Clipboard.GetText() 方法将剪贴板文本写入文件。我的代码如下。你会注意到我必须写出它的命名空间中的所有内容,所以我为它不是 C# 的方式而道歉。注意:如果要制作 csv 文件,DGV 会将单元格拆分为水平选项卡 (ascii 9)。您可以为逗号执行 replace() 方法。注意: DGV.ClearSelection() 是完成它的好方法。注意:您可能需要在 DGV 上启用 ClipboardCopyMode。

DataGridView1.SelectAll();
System.Windows.Forms.Clipboard.SetDataObject(DataGridView1.GetClipboardContent());
System.IO.File.WriteAllText("File.txt",System.Windows.Forms.Clipboard.GetText());