在GridView中为CSV文件分隔列

时间:2011-08-26 06:43:29

标签: c# asp.net gridview

我想获得有关如何分隔列以显示我上传的csv文件内容的帮助。

//  get all lines of csv file
     string[] str = File.ReadAllLines(Server.MapPath("~/MyPlace"));

    // get the column header means first line
    string[] temp = str[0].Split(',');
    // creates columns of gridview as per the header name

     // now retrieve the record from second line and add it to datatable
    for(int i=1;i<str.Length;i++)
    {
        string[] t = str[i].Split(',');


    }
    // assign gridview datasource property by datatable
    myGridView.DataSource = str;
    // bind the gridview
    myGridView.DataBind();

正如您所看到的,我已经使用Split(',')命令完成了拆分,但是当我调试它时,它将显示一列中的所有内容,而不是显示在不同的行和列中。如何将内容分成不同的列和行?

1 个答案:

答案 0 :(得分:2)

是的,你进行了拆分,但是你将结果存储在循环内的局部变量t中,从未使用它。 你可以试试

var data =
   File.ReadAllLines(Server.MapPath("~/MyPlace"))
   .Select(line => line.Split(','))
   .Select(columns => new {FirstColumnName = columns[0], SecondColumnName = columns[1] /*, ... */});
myGridView.DataSource = data;
myGridView.DataBind();

此代码段应该逐行读取您的文件,首先将行拆分为数组(列),然后为包含FirstColumName =第一项在线等的每一行创建一个匿名类对象。

示例:

    var test = "Donald,Duck\nMickey,Mouse";

    var data =
       test.Split('\n')
       .Select(line => line.Split(','))
       .Select(columns => new { FirstColumnName = columns[0], SecondColumnName = columns[1] /*, ... */});

    GridView1.DataSource = data;
    GridView1.DataBind();

只有最简单的页面(只是拖动到页面上的GridView)会产生以下结果: enter image description here