问题描述
我知道的不多,如下也是在网上COPY的代码,可以把CSV导入到DATATABLE里,但是CSV的第一列并没有成为字段名,而是DATATABLE的第一行,请帮忙改一下,感谢!publicDataTableReadCSV(stringfilepath){DataTablemycsvdt=newDataTable();stringstrpath=filepath;//csv文件的路径intintColCount=0;boolblnFlag=true;DataColumnmydc;DataRowmydr;stringstrline;string[]aryline;StreamReadermysr=newStreamReader(strpath,System.Text.Encoding.Default);while((strline=mysr.ReadLine())!=null){aryline=strline.Split(newchar[]{','});//给datatable加上列名if(blnFlag){blnFlag=false;intColCount=aryline.Length;intcol=0;for(inti=0;i<aryline.Length;i++){col=i+1;mydc=newDataColumn(col.ToString());mycsvdt.Columns.Add(mydc);}}//填充数据并加入到datatable中mydr=mycsvdt.NewRow();for(inti=0;i<intColCount;i++){mydr[i]=aryline[i];}mycsvdt.Rows.Add(mydr);}returnmycsvdt;}
解决方案
解决方案二:
if(blnFlag)里加个continue否则你既把第一行当做列名,又把它当做第一行了或者把下面的代码写进else里
解决方案三:
算了,我还是直接给你改了吧,估计这样说你自己也不一定会改if(blnFlag){blnFlag=false;intColCount=aryline.Length;intcol=0;for(inti=0;i<aryline.Length;i++){col=i+1;mydc=newDataColumn(col.ToString());mycsvdt.Columns.Add(mydc);}}else{//填充数据并加入到datatable中mydr=mycsvdt.NewRow();for(inti=0;i<intColCount;i++){mydr[i]=aryline[i];}mycsvdt.Rows.Add(mydr);}
解决方案四:
http://xiangce.baidu.com/picture/album/list/6d17445f6b196044a9a4300b244a30294b86269a#pic你修改后的效果是圖片的藍色的樣子,我要的是紅色的樣子.請再看看,謝謝!
解决方案五:
图片看不了,直接跳转到了百度空间相册的首页请将图片上传到CSDN,或者描述清楚你想要的效果
解决方案六:
我知道你是什么意思了for(inti=0;i<aryline.Length;i++){mycsvdt.Columns.Add(aryline[i]);}
解决方案七:
不好意思,修改后报错了。为什么我上传不了图片到CSDN.CSV的样子是:有14列,第一行是ID,NAME。我要导入到TABLE的样子是:第一行ID,NAME为作为TABLE的列名,就是SQL里SELECTID,NAMEfrom的列名。从第二行开始就是TABLE的内容。我的代码是把ID,NAME导入到TABLE里的内容了,而不是列名。254807862我的QQ。加我吧。感谢!
解决方案八:
报错,报什么错是否你第一行有重复的列名了?
解决方案九:
是的。现在你明白我的需求了吗?
解决方案十:
datatable里不允许有重复的列名.
解决方案十一:
所以你必须改需求要么把你表格里的列名改改,改成不一样的要么读取到之后判断如果有了,自动加点什么,比如(1),(2)什么的你想让2列有同一个列名,是不允许的.