C# 将数据加载到gridview

C# 将数据加载到gridview,c#,datagridview,C#,Datagridview,我有一个DataGridView,我想将其内容保存到CSV文件中。然后,当我再次运行该程序时,它将数据从CSV文件加载到gridview 我有以下代码要保存到CSV文件: private void button1_Click(object sender, EventArgs e) { FileInfo todel = new FileInfo(@"c:\dd\GB STOCK.csv"); todel.Delete(); int

我有一个
DataGridView
,我想将其内容保存到CSV文件中。然后,当我再次运行该程序时,它将数据从CSV文件加载到gridview

我有以下代码要保存到CSV文件:

    private void button1_Click(object sender, EventArgs e)
    {
        FileInfo todel = new FileInfo(@"c:\dd\GB STOCK.csv");
        todel.Delete();

        int cols;
        //open file 
        StreamWriter wr = new StreamWriter(@"c:\dd\GB STOCK.csv");

        //determine the number of columns and write columns to file 
        cols = dataGridView1.Columns.Count;
        for (int i = 0; i < cols ; i++)
        {
            wr.Write(dataGridView1.Columns[i].Name.ToString().ToUpper() + ",");
        }
        wr.WriteLine();

        //write rows to excel file
        for (int i = 0; i < (dataGridView1.Rows.Count - 1); i++)
        {
            for (int j = 0; j < cols; j++)
            {
                if (dataGridView1.Rows[i].Cells[j].Value != null)
                {
                    wr.Write(dataGridView1.Rows[i].Cells[j].Value + ",");
                }
                else
                {
                    wr.Write(",");
                }
            }

            wr.WriteLine();
        }
        //close file
        wr.Close();
    }
private void按钮1\u单击(对象发送者,事件参数e)
{
FileInfo todel=newfileinfo(@“c:\dd\GB STOCK.csv”);
todel.Delete();
int cols;
//打开文件
StreamWriter wr=新的StreamWriter(@“c:\dd\GB STOCK.csv”);
//确定列数并将列写入文件
cols=dataGridView1.Columns.Count;
for(int i=0;i
以及要从csv加载到gridview的以下代码:

    private void Form1_Load(object sender, EventArgs e)
    {
        string rowValue;
        string[] cellValue;
        if (System.IO.File.Exists(@"C:\dd\GB STOCK.csv"))
        {
            System.IO.StreamReader streamReader = new StreamReader(@"C:\dd\GB STOCK.csv");
            // Reading header

            rowValue = streamReader.ReadLine();
            cellValue = rowValue.Split(',');

            for (int i = 0; i <= cellValue.Count() - 1; i++)
            {
                DataGridViewTextBoxColumn column = new DataGridViewTextBoxColumn();
                column.Name = cellValue[i];
                column.HeaderText = cellValue[i];
                dataGridView1.Columns.Add(column);
            }

            // Reading content
            while (streamReader.Peek() != -1)
            {
                rowValue = streamReader.ReadLine();
                cellValue = rowValue.Split(',');
                dataGridView1.Rows.Add(cellValue);
            }
            streamReader.Close();
        }
        else
        {
            MessageBox.Show("No File is Selected");
        }
    }
private void Form1\u加载(对象发送方,事件参数e)
{
字符串行值;
字符串[]单元格值;
如果(System.IO.File.Exists(@“C:\dd\GB STOCK.csv”))
{
System.IO.StreamReader StreamReader=新的StreamReader(@“C:\dd\GB STOCK.csv”);
//读头
rowValue=streamReader.ReadLine();
cellValue=rowValue.Split(',');

对于(int i=0;i在将数据网格值保存到
CSV
时,请在
按钮1\u单击
,检查网格视图列的计数(它来了多少。?以及实际上有多少列?)

仔细调试代码

您是否在您的
按钮中尝试过类似的操作?单击
也可以:

     `cols = dataGridView1.Columns.Count - 1;`

    for (int i = 0; i < cols - 1; i++)
    {
        wr.Write(dataGridView1.Columns[i].Name.ToString().ToUpper() + ",");
    }
for(int i=0;i
在将数据网格值保存到
CSV
时,请在
按钮1中检查网格视图列的计数(它来了多少?实际上有多少列?)

仔细调试代码

您是否在您的
按钮中尝试过类似的操作?单击
也可以:

     `cols = dataGridView1.Columns.Count - 1;`

    for (int i = 0; i < cols - 1; i++)
    {
        wr.Write(dataGridView1.Columns[i].Name.ToString().ToUpper() + ",");
    }
for(int i=0;i
保存时,行的结尾是逗号。因此,当文件读回时,它会认为末尾有一个额外的(空)值。请尝试:

rowValue.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

保存时,行的结尾是逗号。因此,当文件读回时,它会认为末尾有一个额外的(空)值。请尝试:

rowValue.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

是的,我试过了,但它显示了没有标题的最后一列。是的,我试过了,但它显示了没有标题的最后一列