2011-06-22 14 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に読み込み(すでに行っています)、DataTableをグローバル変数に保存します。

2検索をクリックしたときDataTable.Selectexampleを使用しているか、またはoledbを使用しているため、データテーブル選択の代わりに簡単なクエリでExcelを選択することができます。私は、私はこれまでのところは良い提供されたリンクを使用Example Excelがデータグリッドにテキストをハイライト表示し、その後

3-探し、私が使用の窓をhaventは、このような長い時間を形成するが、多分http://social.msdn.microsoft.com/forums/en-US/vbgeneral/thread/43f6b81f-4cb7-4e8e-bd29-e3645f200734/あなた

オクラホマための手がかりであるかもしれません

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

・ホープ、このことができますhighlihtすべての作業を除きます。

+0

あなたは良いですが、私の検索ボタンのコード例がありますか?あなたの最初の一歩を私に説明することができますか? – Sebastian

+0

@matthias既にパート1を達成しましたか? – adt

+0

@mathia更新された回答 – adt