分割字符串并将其放在DataGridView的第一列中

本文关键字:一列 DataGridView 串并 字符串 字符 分割 | 更新日期: 2023-09-27 18:02:53

我需要取文件的第一行,并将字符串的单词放入DataGridView的第一列。

我写了这段代码,其中csv文件转换为数组列表:

ArrayList fileList = new ArrayList();
private void button2_Click(object sender, EventArgs e)
{                           
    string line;
    // Read the file and display it line by line.
    //Read the path from the TextBox
    System.IO.StreamReader file = new System.IO.StreamReader(textBox1.Text);
    stringforData=file.ReadLine(); //this line is because I didn't need //the first 
    //line of the file  
    while ((line = file.ReadLine()) != null)
    {
        // puts elements into array 
        fileList.Add(line.Split(';'));
    }
    file.Close();
}

我的文件是这样的:

Name;Surname;Telephone;Address;
george;parado;3434;lili_2;
jennifer;macin;3333;powel_34;
nick;lukas;3322;manchester_44;

我希望DataGridView是这样的:

**Subject      Type**
Name
Surname
Telephone
Address

所以我需要取文件的第一行,并把它放在DataGridView的第一列。

到目前为止,我已经制作了这个方法。

ArrayList forData = new ArrayList();
string stringforData;
public void ToDataGrid()
{
    DataGridViewColumn newCol = new DataGridViewTextBoxColumn();
    forData.Add(stringforData.Split(';'));
}

ToDataGrid方法必须将名为forData的数组列表中的元素放到DataGridView的第一列中。

请帮助! !

分割字符串并将其放在DataGridView的第一列中

下面的代码接受一个带分隔符的字符串,拆分它,然后将值添加到datagridview列。虽然我还是不明白你为什么要这样做。

string csv = "Name,Surname,Telephone,Address";
string[] split = csv.Split(',');
DataGridViewTextBoxColumn subject = new DataGridViewTextBoxColumn();
subject.HeaderText = "Subject Type";
subject.Name = "Subject";
dataGridView1.Columns.Add(subject);
foreach (string item in split)
{
    dataGridView1.Rows.Add(item);
}

我提供这个答案是基于您希望将分隔文件的每一行放入datagridview行这一假设。如果这不是你真正想要的,请添加评论。

string csv = "John,Doe,21";
string[] split = csv.Split(',');
DataGridViewTextBoxColumn firstName = new DataGridViewTextBoxColumn();
DataGridViewTextBoxColumn lastName = new DataGridViewTextBoxColumn();
DataGridViewTextBoxColumn age = new DataGridViewTextBoxColumn();
dataGridView1.Columns.Add(firstName);
dataGridView1.Columns.Add(lastName);
dataGridView1.Columns.Add(age);
dataGridView1.Rows.Add(split);
上面的代码显然只在一行上工作,但是你可以很容易地在循环中调用它。如果这样做,请注意不要在循环中添加列!

这是在网格中显示分隔文件的一种快速方法,但是如果我正在编写这段代码,我会将文件解析为对象模型,然后将这些对象的列表绑定到datagridview数据源-这将为您提供双向数据绑定和更易于管理的处理这些数据的方式。

甚至像我下面展示的一些基本的东西也会更干净:

var users = (from line in File.ReadAllLines(@"C:'mycsv.txt")
let columns = line.Split(',')
select new User()
{
    FirstName = columns[0],
    Surname = columns[1],
    Age = columns[2]
}).ToList();
dataGridView1.DataSource = users;