各位高手 
      现有一个文件夹,里面有好多个CSV文件,如何用代码实现 读取到winform 中的DataTable中

解决方案 »

  1.   

    如果能保证CSV文件格式正确的话
    用下面的方法试试DataTable dtData = new DataTable();
                dtData.Columns.Add("Column1");
                dtData.Columns.Add("Column2");
                dtData.Columns.Add("Column3");
                String[] FileNameList = Directory.GetFiles("文件夹路径");
                foreach (String filePath in FileNameList)
                {
                    StreamReader sr = new StreamReader(filePath);
                    while (true)
                    {
                        String strData = sr.ReadLine();
                        if (!String.IsNullOrEmpty(strData))
                        {
                            String[] strValue=strData.Split(',');
                            DataRow dr = dtData.NewRow();
                            dr["Column1"] = strValue[0];
                            dr["Column2"] = strValue[1];
                            dr["Column3"] = strValue[2];
                            dtData.Rows.Add(dr);
                        } 
                    }            }
      

  2.   

    刚才写的仓促,漏了return;            DataTable dtData = new DataTable();
                dtData.Columns.Add("Column1");
                dtData.Columns.Add("Column2");
                dtData.Columns.Add("Column3");
                String[] FileNameList = Directory.GetFiles("文件夹路径");
                foreach (String filePath in FileNameList)
                {
                    StreamReader sr = new StreamReader(filePath);
                    while (true)
                    {
                        String strData = sr.ReadLine();
                        if (!String.IsNullOrEmpty(strData))
                        {
                            String[] strValue = strData.Split(',');
                            DataRow dr = dtData.NewRow();
                            dr["Column1"] = strValue[0];
                            dr["Column2"] = strValue[1];
                            dr["Column3"] = strValue[2];
                            dtData.Rows.Add(dr);
                        }
                        else
                        {
                            return;//刚才漏了~
                        }
                    }
                }
      

  3.   

    此方法如果碰到CSV中一行空的,就Return了,后面的数据就无法读出了,麻烦解释下,谢谢
      

  4.   

    有空行的话稍微改一句话就行了if (!String.IsNullOrEmpty(strData))
    变成
    if (strData != null)
    你再试试~
      

  5.   

    有空行的话改if判断
    if (!String.IsNullOrEmpty(strData))
    改成 if (strData != null) 就可以了
      

  6.   

    根本不能用return  应该是break才对吧 晕!!!!!
      

  7.   


    谢谢,分给你,如有空 帮我看看另外的问题
    http://topic.csdn.net/u/20110509/14/ef813375-2a6a-49a4-828d-0973e6c30741.html?seed=1064715689&r=73214823#r_73214823
      

  8.   

    6楼说的对,我写错了,是break;