小弟想写个读取csv的代码,但碰到这么几个问题,希望大家帮帮忙
1,如果用oledb读取的话,文件名含有空格或者-等特殊符号时,无法读取,但如果用split按,来拆分又遇到正文含有逗号会出错的情况
2,oledb读数据会有丢失的情况,比如一列分别是ww11,aa,1,2,3,4这样的数据,读出来的话只会有int类型的,也就是说ww11和aa这2项会是空的,IMEX也设置等于1了还是不行,请问怎么办啊~~

解决方案 »

  1.   

    csv 文件 最好有特定 格式 正文中如果 会出现","好的话建议将 正文 用类似这样的 "xxx","XXX" 方式保存如果 格式太复杂 可以按固定长度去读取 要 搞个万能的 读取 方法出来 不太现实
      

  2.   

    OLeDB读应该没啥问题啊如果是标准的CSV,好像每个字段都是“”括起来的,你可以用“split字符串,然后去掉最前和最后的空还有中间的单单的,字符串(中间的空串不要去)
      

  3.   

    好像oledb是不行哦,我试了很多次了,好像如果数字比字符串多,都按数字来读,字符串就会丢失
    字符串多的就按字符串读,数据都正常
      

  4.   

    OleDb应该没问题吧。。我是这么做的using (OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\FUC\Desktop\;Extended Properties='Text;'")) {
                    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"
      

  5.   


    哥们,我和你的代码差不多的,没看明白你下面的那个数据,我是在excel里直接写的数据,存为csv文件的
    要不你试试看,第一列数据是ww11,aa,11,22,33,44 六项,注意是列~~~前两项会丢失哦~
      

  6.   

    用oledb读取不跟逗号有关,那个逗号是csv自动生成的不会有全角的,如果用逗号来读取,split来拆分又会遇到正文含有无数个逗号和引号的问题
      

  7.   

    http://www.cnblogs.com/michaelhuwei/archive/2011/01/27/1946104.html逗号什么的,都能处理
      

  8.   

    ole读取excel或者csv的文件有问题的。
    根据我个人的经验来看,xls和csv中的数据,都分为显示和内容两部分,也就是说显示的数据就是你看到的数据,内容数据,就是后台的你看不到的数据。
    这样来说,对于每一个cell来说,都有text和vlaue1、value2 等3个属性。
    如果你是一个cell一个cell的读取的话,你会发现,有一些cell,text有值,但是value没有,相反的情况也存在。但是如果你在文件中直接将值删除掉,手动打上去,那么text和value都有了。
    每一次读取excel的文件的,都让我觉得不是很放心,就是因为excel 的显示和内容问题,他们并不一致!!
    所以后来,我取消了读取excel的操作,我每次都将excel的文件手动另存为了txt文件。然后读取的txt文件,这样绝对不会有数据丢失的问题。
      

  9.   

    补充一点,ole读取的是cell的value1属性的值。
      

  10.   

    Excel Jetcell .NET 2.5.0