[英]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.