【问题标题】:Search in DataGridView (Excel File) + c#在 DataGridView (Excel 文件) + c# 中搜索
【发布时间】:2011-09-20 17:57:05
【问题描述】:

我有一个问题 :-) 我尝试在 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());
        }

我需要这样的:

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

非常感谢你

【问题讨论】:

    标签: c# search datagridview


    【解决方案1】:

    1 - 从 excel 加载到数据表(您已经这样做了),然后将数据表保存到全局变量

    2- 当点击搜索时使用 DataTable.Select : example 或者由于您使用的是 oledb,您可以再次使用简单查询而不是 Datatable 选择来选择您的 excel,由您决定,如果数据表选择的,您可以尝试一下性能很差。 Exampleexcel搜索

    3- 然后在数据网格中突出显示您的文本,我已经很久没有使用 Windows 窗体了,但也许 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;
            }
        }
    

    希望这会有所帮助。

    【讨论】:

    • 嗯,这很好,但你有我的搜索按钮的代码示例吗?或者你能解释一下你的第一步吗?
    猜你喜欢
    • 2011-09-06
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 2012-01-09
    • 2012-05-04
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    相关资源
    最近更新 更多