我想获得有关如何分隔列以显示我上传的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(',')命令完成了拆分,但是当我调试它时,它将显示一列中的所有内容,而不是显示在不同的行和列中。如何将内容分成不同的列和行?
答案 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)会产生以下结果: