簡體   English   中英

在DataGridView(Excel文件)+ c#中搜索

[英]Search in DataGridView (Excel File) + c#

我有一個問題:-)我嘗試使用datagridview中的突出顯示進行快速搜索。

在我的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());
        }

我需要這樣:

在此處輸入圖片說明

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

非常感謝你

1-從excel加載到數據表(您已經做過),然后將數據表保存到全局變量

2-當單擊搜索時,使用DataTable.Select示例,或者由於您使用的是oledb,因此可以通過簡單查詢而不是Datatable select再次選擇excel,取決於您,如果datatable select的性能不佳,您可以嘗試一下。 excel搜索示例

3-然后在datagrid中突出顯示文本,我已經很長時間沒有使用Windows窗體了,但是也許http://social.msdn.microsoft.com/forums/en-US/vbgeneral/thread/43f6b81f-4cb7-4e8e-bd29 -e3645f200734 /可能是您的線索

好的,我使用了到目前為止我提供的鏈接,很好,除了一切正常:

一個用於讀取excel並在DataTable中搜索的Simple Helper類:

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

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM