我的代码如下,只读出一条乱码显示的数据,为什么啊
 public void loadcsv(string filename)
        {
            //DataTable dt = new DataTable();
            string strConn = @"Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=";
            strConn += ";Extensions=asc,csv,tab,txt;";
            OdbcConnection objConn = new OdbcConnection(strConn);
            OdbcDataAdapter adapter = new OdbcDataAdapter("select * from " + filename, strConn);            if (filename != "")
            {
                try
                {
                    dtcsv.Clear();
                    dtcsv.Columns.Clear();
                    adapter.Fill(dtcsv);
                }
                catch (System.Exception e)
                {
                    System.Windows.Forms.MessageBox.Show(e.ToString());
                }
            }        }
 

解决方案 »

  1.   

    ·ODBC
    o标准连接(StandardSecurity):
    "Driver={MicrosoftTextDriver(*.txt;*.csv)};Dbq=C:\\DatabasePath\\;Extensions=asc,csv,tab,txt;"
    如果文本文件使用tab作为分隔符,你必须创建schema.ini文件,你必须在连接串中使用Format=TabDelimited选项。
    注意:你必须在sql语句中指定文件名(例如"Select Name,Address From Clients.csv")csv文件规则
      1 开头是不留空,以行为单位。   2 可含或不含列名,含列名则居文件第一行。   3 一行数据不垮行,无空行。   4 以半角逗号(即,)作分隔符,列为空也要表达其存在。   5 列内容如存在半角逗号(即,)则用半角引号(即"")将该字段值包含起来。   6 列内容如存在半角引号(即")则应替换成半角双引号("")转义。   7 文件读写时引号,逗号操作规则互逆。   8 内码格式不限,可为ASCII、Unicode或者其他。   9 不支持特殊字符和中文
      

  2.   

    这个应该和读Excel文件差不多吧。
      

  3.   

    你去我的博客园吧。http://www.cnblogs.com/jinyuttt/archive/2011/07/11/2103351.html
      

  4.   

    csv文件其实可以以读文本文件的形式读出来,你可以试试。欢迎光临我的博客
      

  5.   

    我在网上找到另外一种方法 又出现另外的问题,'D:\2010-11-26.csv'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。大家帮帮忙
    代码如下
    string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strPath + ";Extended Properties='TEXT;HDR=NO;FMT=Delimited'";
             
                OleDbConnection objConn = new OleDbConnection(strConn);
                string strSql = "Select * From " + filename;
                OleDbCommand cmd = new OleDbCommand(strSql, objConn);
                OleDbDataAdapter dad = new OleDbDataAdapter(strSql, objConn);            if (filename != "")
                {
                    try
                    {
                        objConn.Open();
                        ad.Fill(dtcsv);
                     
                        objConn.Close();
                    }
                    catch (System.Exception e)
                    {
                        System.Windows.Forms.MessageBox.Show(e.ToString());
                    }
                }
      

  6.   

    谢谢大家,问题已经解决了。
    上面第一种代码读取时,默认第一行为表的列名,在CSV格式文件中插入列名或空白行即可。第一二种代码,是路径名不对,正确如下 public void loadcsv(string filename)
            {
                dtcvs.Clear();
                dtcvs.Columns.Clear();            if (filename != "")
                {
                    try
                    {
                        string Strconn = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" + Path.GetDirectoryName(filename) + ";Extended Properties='text;HDR=no;IMEX=1;'";
                        OleDbConnection objConn = new OleDbConnection(Strconn);
                        string strSql = "Select * From " + Path.GetFileName(filename);
                        OleDbCommand cmd = new OleDbCommand(strSql, objConn);
                        OleDbDataAdapter dad = new OleDbDataAdapter(strSql, objConn);                    objConn.Open();
                      
                        dad.Fill(dtcsv);
                     
                        objConn.Close();
                    }
                    catch (System.Exception e)
                    {
                        System.Windows.Forms.MessageBox.Show(e.ToString());
                    }
                }        }