将值从一列拆分为c#.net中的3个单独列

时间:2011-03-23 02:37:44

标签: c# datagridview csv

我在datagridview中读取/显示csv文件时有些困惑。

以下是这种情况,我正在阅读连续7个数据/列/字段组成的csv文件。我试图在datagridview中显示包含9列/字段的数据。

现在,csv文件中的7个数据/列/字段的值为0到3或1到3的组合。我想将csv中7列/字段的数据拆分为datagridview的最后3列/字段。

例如)。 csv字段中的7列包含123,然后在datagridview中,它在列/字段7 = 1中的值 列/字段8 = 2,列/字段9 = 3.

我想知道,是否可以将值拆分为C#.NET中的3个不同列。

谢谢, Rushabh Shah。

2 个答案:

答案 0 :(得分:1)

我会创建一个类来存储CSV中的每个记录(行)。在此类中,公开了与DataGridView中的九列对应的九个属性。该类将处理将第七列的值拆分为第8列和第9列的逻辑。

当您读入CSV创建此类的实例时,将它们放入List(或其他集合)并将列表绑定到DataGridView。

这就是我的意思。创建以下类:

class Record
{
    public Record(string line) {
        string[] fields = line.Split(',');
        Field1 = fields[0];
        Field2 = fields[1];
        Field3 = fields[2];
        Field4 = fields[3];
        Field5 = fields[4];
        Field6 = fields[5];
        Field7 = fields[6].Substring(0, 1);
        Field8 = fields[6].Substring(1, 1);
        Field9 = fields[6].Substring(2, 1);
    }
    public string Field1 { get; private set; }
    public string Field2 { get; private set; }
    public string Field3 { get; private set; }
    public string Field4 { get; private set; }
    public string Field5 { get; private set; }
    public string Field6 { get; private set; }
    public string Field7 { get; private set; }
    public string Field8 { get; private set; }
    public string Field9 { get; private set; }
}

在表单上删除DataGridView并运行:

// Create a bunch of Record objects.  Note: r1-f3 = record 1, field 3.
List<Record> recordList = new List<Record> { new Record("r1-f1,r1-f2,r1-f3,r1-f4,r1-f5,r1-f6,123"), 
                                             new Record("r2-f1,r2-f2,r2-f3,r2-f4,r2-f5,r2-f6,456"), 
                                             new Record("r3-f1,r3-f2,r3-f3,r3-f4,r3-f5,r3-f6,789")};
dataGridView1.DataSource = recordList;

请注意,这是非常脆弱的代码,您几乎可以在生产应用程序中以不同方式执行此处显示的所有内容。它确实显示了我的意思。

答案 1 :(得分:0)

首先,您将CSV文件数据放入数据表中,然后在下一步中放置一个循环并解析值列vise和 例如:if(dataTable.Row [index] [7] == 123; 然后将值拆分为数组,然后将数组值设置为数据表