从C#中的csv文件中读取字母数字字符

时间:2010-04-13 07:57:38

标签: c# parsing csv datatable oledb

我使用以下代码来阅读我的csv文件:

public DataTable ParseCSV(string path)
    {
        if (!File.Exists(path))
            return null;

        string full = Path.GetFullPath(path);
        string file = Path.GetFileName(full);
        string dir = Path.GetDirectoryName(full);

        //create the "database" connection string 
        string connString = "Provider=Microsoft.ACE.OLEDB.12.0;"
          + "Data Source=\"" + dir + "\\\";"
          + "Extended Properties=\"text;HDR=Yes;FMT=Delimited\"";

        //create the database query
        string query = "SELECT * FROM " + file;

        //create a DataTable to hold the query results
        DataTable dTable = new DataTable();

        //create an OleDbDataAdapter to execute the query
        OleDbDataAdapter dAdapter = new OleDbDataAdapter(query, connString);

        //fill the DataTable
        dAdapter.Fill(dTable);

        dAdapter.Dispose();

        return dTable;
    }

但是上面没有从csv文件中读取字母数字值。它只能读取数字或字母。

我需要修复以读取字母数字值吗?请建议。

4 个答案:

答案 0 :(得分:1)

我建议你使用A Fast CSV Reader,它没有这个问题,速度要快得多。

答案 1 :(得分:0)

从连接字符串中删除IMEX = 1。我不认为你需要它用于CSV文件。

答案 2 :(得分:0)

尝试通过堆栈溢出发布的OleDBAdapter Excel QA

我没试过,但听起来很有意思! LinqToExcel 他们说它也可以用在.CSV文件上......

答案 3 :(得分:0)

嗨所有这些代码都获得了字母数字值

using System.Data.OleDb;

string ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filepath + ";" + "Extended Properties="+(char)34+"Excel 8.0;IMEX=1;"+(char)34;

        string CommandText = "select * from [Sheet1$]";

        OleDbConnection myConnection = new OleDbConnection(ConnectionString);
        myConnection.Open();

        OleDbDataAdapter myAdapter = new OleDbDataAdapter(CommandText, myConnection);

        ds = null;
        ds = new DataSet();
        myAdapter.Fill(ds);