【问题标题】:I get an error when I try to import files from a txt to a datagridview当我尝试将文件从 txt 导入到 datagridview 时出现错误
【发布时间】:2021-06-02 00:04:53
【问题描述】:

正如标题中的问题所说,我在将数据从 txt 文件导入 datagridview 时遇到问题。我得到错误输入数组比列数长。这是我用来将数据从 datagridview 保存到 txt 文件的内容,以及我想用来将数据导入 datagridview 的内容:

 private void OpenFile_Click(object sender, EventArgs e)
    {
        string[] lines = File.ReadAllLines(@"C:\Users\gv9816\source\repos\Liste\UserData.txt");
        string[] values;


        for (int i = 0; i < lines.Length; i++)
        {
            values = lines[i].ToString().Split('|');
            string[] row = new string[values.Length];

            for (int j = 0; j < values.Length; j++)
            {
                row[j] = values[j].Trim();
            }
            _table.Rows.Add(row);
        }

    }

    private void SaveFile_Click_1(object sender, EventArgs e)
    {
        TextWriter writer = new StreamWriter(@"C:\Users\gv9816\source\repos\Liste\UserData.txt");
        for (int i = 0; i < _table.Rows.Count - 1; i++)
        {
            for (int j = 0; j < _table.Columns.Count; j++)
            {
                writer.Write("\t" + DataGridViewCell.Rows[i].Cells[j].Value.ToString() + "\t");
            }
            writer.WriteLine("");

        }
        writer.Close();
        MessageBox.Show("Data Exported");
    }

另外,这是我用来创建列的:

private void Form1_Load(object sender, EventArgs e)
    {
        _table.Columns.Add("First Name", typeof(string));
        _table.Columns.Add("Last Name", typeof(string));
        _table.Columns.Add("Age", typeof(int));

        DataGridViewCell.DataSource = _table;
    }

这是我的 UserData.txt 文件中的输出

Hans    |   Müller  |   12  |

Here is what the application Looks like

And this is what is generated into the UserData file

任何帮助将不胜感激:)

【问题讨论】:

  • 你能提供样本数据吗?你在哪一行出错了?
  • 例如,如果我输入名字、姓氏和年龄,然后按保存按钮,它会将其复制到 txt 文件中。我在行中收到错误:_table.Rows.Add(row);的 SaveFile_Click。
  • 我想知道 SampleData.txt 里面的数据
  • 我编辑了我的问题。现在您应该看到 txt 文件的输出

标签: c# datagridview txt


【解决方案1】:

最后一个|字符是问题,如果你不能改变txt文件里面的数据。只需更改此行,

values = lines[i].ToString().Split('|');

到这里,

values = lines[i].ToString().Split('|').Where(x => !string.IsNullOrEmpty(x)).ToArray();

【讨论】:

  • 是的。非常感谢。当我尝试添加多个 Person 时也会出现问题,即使我在其中放了 2 个,它也只显示一个条目。我可以改变我的问题,这样你就知道我的意思了。
  • 在 SaveFile_Click_1 处,从第一个 for 循环中删除 -1。
猜你喜欢
  • 1970-01-01
  • 2022-11-21
  • 1970-01-01
  • 2011-07-12
  • 2011-06-02
  • 1970-01-01
  • 1970-01-01
  • 2017-05-29
  • 1970-01-01
相关资源
最近更新 更多