2013-01-20 66 views
0

我是c#的新手,我在c#中有一個簡單的項目,我想從c#中的excel中獲取一些數據,並且希望將其保存在數據庫中,都不知道,我發現下面的代碼和它的工作很好,但不是給我的數據,這裏是代碼:如何從c#中的excel中逐行獲取數據#

var fileName = @"C:\Users\AhsanWindows8\Desktop\Book1.xlsx"; 
     var connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=\"Excel 12.0;IMEX=1;HDR=NO;TypeGuessRows=0;ImportMixedTypes=Text\""; ; 
     using (var conn = new OleDbConnection(connectionString)) 
     { 
      conn.Open(); 

      var sheets = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); 
      using (var cmd = conn.CreateCommand()) 
      { 
       cmd.CommandText = "SELECT * FROM [" + sheets.Rows[0]["TABLE_NAME"].ToString() + "] "; 

       var adapter = new OleDbDataAdapter(cmd); 
       var ds = new DataSet(); 
       adapter.Fill(ds); 
      } 
     } 

現在這是我的excel文件看起來像

enter image description here

我可以在像鍵值對這樣的字典中獲取這些數據,假設左邊是英文單詞側面將是關鍵,右側的文字將是價值。

回答

0

試試這個:

cmd.CommandText = 
     "SELECT * FROM [" + sheets.Rows[0]["TABLE_NAME"].ToString() + "$] "; 

當數據集將充滿你可以使用此代碼來構建字典。

var dict = new Dictionary<string, string>(); 
foreach(DataRow row in ds.Tables[0].Rows) 
{ 
    dict.Add(row[0].ToString(), row[1].ToString()); 
} 

如果你熟悉LINQ,你可以嘗試使用此:

ds.Tables[0].Rows.ToDictionary(r => r[0].Tostring(), r => r[1].Tostring()); 
+0

我仍然不知道如何將這些數據轉換成字典(鍵,值) – Smartboy