2010-04-13 207 views
1

我使用下面的代碼來閱讀我的csv文件:閱讀從CSV文件中的字母數字字符在C#

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文件中的字母數字值。它只讀我數字或阿爾法。

我需要做什麼修復來讀取字母數字值?請建議。

回答

0

從連接字符串中刪除IMEX = 1。我認爲你不需要CSV文件。

+0

我試過了,但是它仍然是同樣的結果 – Prasad 2010-04-13 08:16:58

+0

奇怪,我在做一些工作,並使用大致相同的代碼,但使用不同的連接字符串作爲逗號分隔文件 - Provider = Microsoft.Jet.OLEDB.4.0; Data Source = DirName; Extended Properties ='text; HDR = Yes; FMT =分隔」 – anonymous 2010-04-13 08:44:38

0

試試這個OleDBAdapter Excel QA我通過堆棧溢出發佈。

我還沒有試過這個,但它聽起來很有趣! LinqToExcel 他們說可以。CSV文件,以及使用...

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);