2014-03-01 49 views
0

這是怎麼了導入我Excel文件:將數據導入與特定條件的DataGridView

stirng file = "c:\myFile.xlsx"; 
DataGridView dgvIM; 

private void Import() 
     { 
      String name = "Items"; 
      String constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + 
          file + 
          ";Extended Properties='Excel 8.0;HDR=YES;';"; 

      OleDbConnection con = new OleDbConnection(constr); 
      OleDbCommand oconn = new OleDbCommand("Select * From [" + name + "$]", con); 
      con.Open(); 

      OleDbDataAdapter sda = new OleDbDataAdapter(oconn); 
      System.Data.DataTable data = new System.Data.DataTable(); 
      sda.Fill(data); 
      dgvIM.DataSource = data; 
     } 

什麼,我想要做的就是導入我的Excel文件,但具體的情況,我的第二列包含若干組的字符串(「第一」,「第二」等),我想只添加名爲「First」的列而不是整個列表。

我該怎麼做?

回答

2

只需使用WHERE條件的SQL命令這樣

string cmdText = "Select * From [" + name + "$] WHERE secondColumnName = 'First'"; 
using(OleDbConnection con = new OleDbConnection(constr)) 
using(OleDbCommand oconn = new OleDbCommand(cmdText con)) 
{ 
    con.Open(); 
    OleDbDataAdapter sda = new OleDbDataAdapter(oconn); 
    System.Data.DataTable data = new System.Data.DataTable(); 
    sda.Fill(data); 
    dgvIM.DataSource = data; 
} 

注意,您在ConnectionString中指定HDR = YES,這意味着你的Excel工作表中的第一個非空行包含的解釋頭作爲列名。您應該更新您的查詢的WHERE條件設定正確的列名

編輯在以低於你的意見的迴應,如果你想要檢索的所有行上的年齡是12的查詢變得

string cmdText = "Select * From [" + name + "$] WHERE Age = 12"; 
+0

如果這不是第二列名稱,而是第三列值? (第一行是標題) – user3328870

+0

我不明白。你能舉一個你的數據的例子,你想要檢索什麼? – Steve

+0

我的第一行只是頭名稱,例如:name,id,age和下一行中的值,例如John,Haze,12所以我想要所有值爲12 – user3328870

相關問題