小弟想写个读取csv的代码,但碰到这么几个问题,希望大家帮帮忙
1,如果用oledb读取的话,文件名含有空格或者-等特殊符号时,无法读取,但如果用split按,来拆分又遇到正文含有逗号会出错的情况
2,oledb读数据会有丢失的情况,比如一列分别是ww11,aa,1,2,3,4这样的数据,读出来的话只会有int类型的,也就是说ww11和aa这2项会是空的,IMEX也设置等于1了还是不行,请问怎么办啊~~
1,如果用oledb读取的话,文件名含有空格或者-等特殊符号时,无法读取,但如果用split按,来拆分又遇到正文含有逗号会出错的情况
2,oledb读数据会有丢失的情况,比如一列分别是ww11,aa,1,2,3,4这样的数据,读出来的话只会有int类型的,也就是说ww11和aa这2项会是空的,IMEX也设置等于1了还是不行,请问怎么办啊~~
字符串多的就按字符串读,数据都正常
DataTable dtTable = new DataTable();
OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM [Book1.csv]", conn);
try {
adapter.Fill(dtTable);
} catch (Exception ex) {
dtTable = new DataTable(); }
this.dataGridView1.DataSource = dtTable;
}csv是用excel以csv形式保存的,楼主也可以这样,方便测试
111,""",""",ccc,333
asdf,231,sdf31,"""asd34"",5"
哥们,我和你的代码差不多的,没看明白你下面的那个数据,我是在excel里直接写的数据,存为csv文件的
要不你试试看,第一列数据是ww11,aa,11,22,33,44 六项,注意是列~~~前两项会丢失哦~
根据我个人的经验来看,xls和csv中的数据,都分为显示和内容两部分,也就是说显示的数据就是你看到的数据,内容数据,就是后台的你看不到的数据。
这样来说,对于每一个cell来说,都有text和vlaue1、value2 等3个属性。
如果你是一个cell一个cell的读取的话,你会发现,有一些cell,text有值,但是value没有,相反的情况也存在。但是如果你在文件中直接将值删除掉,手动打上去,那么text和value都有了。
每一次读取excel的文件的,都让我觉得不是很放心,就是因为excel 的显示和内容问题,他们并不一致!!
所以后来,我取消了读取excel的操作,我每次都将excel的文件手动另存为了txt文件。然后读取的txt文件,这样绝对不会有数据丢失的问题。