加载文本文件并填充到gridview中

时间:2014-03-07 10:05:34

标签: c# gridview

我有一个代码,允许用户选择文件并将文本文件中的数据加载到datagridview。

 private void cmdload_Click(object sender, EventArgs e)
    {
        DataTable table = new DataTable();
        table.Columns.Add("Point");
        table.Columns.Add("X");
        table.Columns.Add("Y");
        table.Columns.Add("Z");
        table.Columns.Add("R");
        table.Columns.Add("A");
        table.Columns.Add("B");
        table.Columns.Add("C");

        Stream myStream = null;
        OpenFileDialog openFileDialog1 = new OpenFileDialog();

        openFileDialog1.InitialDirectory = "\\Yamaha";
        openFileDialog1.Filter = "Data Files (*.PNT)|*.PNT";
        openFileDialog1.FilterIndex = 2;
        openFileDialog1.RestoreDirectory = true;

        if (openFileDialog1.ShowDialog() == DialogResult.OK)
         {
             try
             {
                 if ((myStream = openFileDialog1.OpenFile()) != null)
                 {
                     using (myStream)
                     {
                         string filename = openFileDialog1.FileName;
                         using (var reader = File.OpenText(@filename))
                         {
                             string line;
                             while ((line = reader.ReadLine()) != null)
                             {
                                 string[] parts = line.Split(' ');
                                 table.Rows.Add(parts[0], parts[1], parts[2], parts[3], parts[4], parts[5], parts[6], parts[7]);
                             }
                             dataGridView1.DataSource = table;
                         }
                     }
                 }
             }

编辑:

我已根据建议编辑了我的代码,但该值并未显示。请指教。

private void cmdload_Click(object sender, EventArgs e)
    {
        DataTable table = new DataTable();
        table.Columns.Add("Point");
        table.Columns.Add("X");
        table.Columns.Add("Y");
        table.Columns.Add("Z");
        table.Columns.Add("R");
        table.Columns.Add("A");
        table.Columns.Add("B");
        table.Columns.Add("C");
        Stream myStream = null;
        OpenFileDialog openFileDialog1 = new OpenFileDialog();

        openFileDialog1.InitialDirectory = "C:\\"; 
        openFileDialog1.Filter = "Data Files (*.PNT)|*.PNT";
        openFileDialog1.FilterIndex = 2;
        openFileDialog1.RestoreDirectory = true;
        if (openFileDialog1.ShowDialog() == DialogResult.OK)
        {
            try
            {
                if ((myStream = openFileDialog1.OpenFile()) != null)
                {
                    using (myStream)
                    {
                        string filename = openFileDialog1.FileName;
                        using (var reader = File.OpenText(filename)) 
                        {
                            string line;
                            while ((line = reader.ReadLine()) != null)
                            {
                                string[] parts = line.Split(' ');
                                table.Rows.Add(parts[0], parts[1], parts[2], parts[3], parts[4], parts[5], parts[6], parts[7]);
                            }
                            dataGridView1.DataSource = table;
                        }
                    }
                }
            }

            catch (Exception ex) // you need to add the catch block if yo are using try block
            {
                MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
            }

        }
    }

文本文件如下:
enter image description here

我希望在用户加载文件时将数据文件粘贴到gridview中 enter image description here

现在我不确定为什么我的代码不起作用。有人可以给我一个建议吗?

1 个答案:

答案 0 :(得分:1)

请看一下:

    private void cmdload_Click(object sender, EventArgs e)
    {
        DataTable table = new DataTable();
        table.Columns.Add("Point");
        table.Columns.Add("X");
        table.Columns.Add("Y");
        table.Columns.Add("Z");
        table.Columns.Add("R");
        table.Columns.Add("A");
        table.Columns.Add("B");
        table.Columns.Add("C");
        Stream myStream = null;
        OpenFileDialog openFileDialog1 = new OpenFileDialog();

        openFileDialog1.InitialDirectory = "C:\\"; // your directory is also not defined properly
        openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";// have a look to filter as well
        openFileDialog1.FilterIndex = 2;
        openFileDialog1.RestoreDirectory = true;
        if (openFileDialog1.ShowDialog() == DialogResult.OK)
        {
            try
            {
                if ((myStream = openFileDialog1.OpenFile()) != null)
                {
                    using (myStream)
                    {
                        string filename = openFileDialog1.FileName;
                        using (var reader = File.OpenText(filename)) // you need not to use '@filename' instead use just 'filename'
                        {
                            string line;
                            while ((line = reader.ReadLine()) != null)
                            {
                                string[] parts = line.Split(' ');
                                table.Rows.Add(parts[0], parts[1], parts[2], parts[3], parts[4], parts[5], parts[6], parts[7]);
                            }
                            dataGridView1.DataSource = table;
                        }
                    }
                }
            }

            catch (Exception ex) // you need to add the catch block if yo are using try block
            {
            }
        }
希望它有所帮助。