2011-06-22 96 views
0

我有一個問題:-)我嘗試使用datagridview中的突出顯示進行快速搜索。在DataGridView(Excel文件)中搜索+ c#

在我的datagridview是一個Excel工作表。

 try 
     { 
      System.Data.OleDb.OleDbConnection MyConnection; 
      System.Data.DataSet DtSet; 
      System.Data.OleDb.OleDbDataAdapter MyCommand; 
      MyConnection = new System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='c:\\test2.xls';Extended Properties=Excel 8.0;"); 
      MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection); 
      MyCommand.TableMappings.Add("Table", "TestTable"); 
      DtSet = new System.Data.DataSet(); 
      MyCommand.Fill(DtSet); 
      dataGridView1.DataSource = DtSet.Tables[0]; 
      MyConnection.Close(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.ToString()); 
     } 

,我需要它是這樣的:

enter image description here

我不知道,我希望有人能幫助我:-)

謝謝非常mutch

回答

1

1 - 從Excel加載到數據表(您已經做到了),然後將DataTable保存到全局變量

2 - 當搜索點擊使用DataTable.Selectexample或者因爲你正在使用OLEDB,你可以再次與一個簡單的查詢,而不是DataTable的選擇,給你,你可能會如果數據表中選擇的性能較差試試看選擇Excel。 Example Excel中搜索

3-然後突出顯示在數據網格你的文字,我還沒有使用過Windows窗體這麼長的時間,但也許http://social.msdn.microsoft.com/forums/en-US/vbgeneral/thread/43f6b81f-4cb7-4e8e-bd29-e3645f200734/可能是一個線索,爲我提供了到目前爲止好你

好,我使用的鏈接,除了highliht一切工作:

一個簡單的輔助類閱讀Excel和DataTable中搜索:

public class ExcelHelper 
    { 
     public static DataTable LoadXLS(string strFile, String sheetName) 
     { 
      DataTable dtXLS = new DataTable(sheetName); 
      try 
      { 
       string strConnectionString = ""; 
       if (strFile.Trim().EndsWith(".xlsx")) 
       { 
        strConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";", strFile); 
       } 
       else if (strFile.Trim().EndsWith(".xls")) 
       { 
        strConnectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";", strFile); 
       } 
       OleDbConnection SQLConn = new OleDbConnection(strConnectionString); 
       SQLConn.Open(); 
       OleDbDataAdapter SQLAdapter = new OleDbDataAdapter(); 
       string sql = "SELECT * FROM [" + sheetName + "$] "; // "WHERE " + column + " = " + value; 
       OleDbCommand selectCMD = new OleDbCommand(sql, SQLConn); 
       SQLAdapter.SelectCommand = selectCMD; 

       SQLAdapter.Fill(dtXLS); 
       SQLConn.Close(); 
      } 
      catch (Exception e) 
      { 
       Console.WriteLine(e.ToString()); 
      } 

      return dtXLS; 
     } 

     public static DataTable QueryDataTable(DataTable dt, string column,string value) 
     { 
      var drs = dt.Select(String.Format("{0} LIKE '%{1}%'", column, value)); 
      DataTable dt2 = dt.Clone(); 
      foreach (var dataRow in drs) 
      { 
       dt2.ImportRow(dataRow); 
      } 
      return dt2; 
     } 
    } 

希望這有助於。

+0

嗯那很好,但是有你我的搜索按鈕的代碼示例?或者你可以向我解釋你的第一步? – Sebastian

+0

@matthias你已經實現部分嗎? – adt

+0

@mathia更新了答案 – adt