2013-10-09 248 views
2

我有這樣搜索名稱

id | Name | Address | Other | 
----------------------------------- 
#1 | xxxx | xxxx | xxxx | 
#2 | yyyy | yyyy | yyyy | 

這個Excel文檔現在我需要搜索名稱字段以Excel文檔與用戶輸入的字符串

例如

用戶輸入文本--->xxxx

我想搜索的名稱字段中的字符串excel的文件

中如果存在方式顯示味精盒.. 我怎樣才能讓這個用C#.NET
任何一個幫助我

+0

你只是想搜索excel並顯示消息框?或者你也想編輯任何值? – pordi

+0

我想搜索excel文檔中的單詞(僅在名稱字段中),用戶在文本框中給出的文本...如果它存在意味着顯示消息.. – GOPI

+0

@GOPI ..我已經添加了答案。請檢查並讓我知道這是否回答您的查詢.. – pordi

回答

0

一種解決方案是將Excel文件導出爲.csv(逗號分隔值)。然後你可以逐行讀取它,用逗號分隔行,並檢查第二個元素(索引1)是否包含你正在搜索的內容。第二個元素,因爲您的名稱列是第二列。

string searched="yourname"; 

using (StreamReader sr = new StreamReader("filename.csv")) 
{ 
    while(!sr.EndOfStream) 
    { 
     string[] splitLine = sr.ReadLine().Split(','); 
     if (splitLine[1]=="yourname") // or .Contains("yourname") 
      return true; 
    } 
} 

未測試代碼,但它應該工作。

+0

如果可能,將文件另存爲CSV文件將是最簡單的。這段代碼應該可以正常工作,但只要知道該文件是否使用了文本分隔符即可。如果是這樣,那麼逗號可能會出現在需要稍微更復雜的拆分的列中 –

+0

搜索可以用於Excel(.xls/.xlsx)文件嗎? – andy

1

基本上你需要將整個excel文件讀取到一個數據表,然後搜索數據表。

請原諒我,因爲我在LINQ中的知識有限。

// You can change C:\Members.xlsx to any valid path 
// where the file is located. 

string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0; 
    FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'"> 
       Data Source=C:\Members.xlsx;Extended 
    FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'"> 
       Properties=""Excel 12.0;HDR=YES;"""; 
// if you don't want to show the header row (first row) in the grid 
// use 'HDR=NO' in the string 

string strSQL = "SELECT * FROM [Sheet1$]"; 
OleDbConnection excelConnection = new OleDbConnection(connectionString); 
excelConnection.Open(); // this will open an Excel file 
OleDbCommand dbCommand = new OleDbCommand(strSQL,excelConnection); 
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(dbCommand); 

// create data table 

DataTable dTable = new DataTable(); 

dataAdapter.Fill(dTable); 

// bind the datasource 

dataBingingSrc.DataSource = dTable; 
// assign the dataBindingSrc to the DataGridView 

dgvExcelList.DataSource = dataBingingSrc;

// dispose used objects 

dTable.Dispose() dataAdapter.Dispose(); dbCommand.Dispose(); excelConnection.Close(); excelConnection.Dispose();

然後,您可以按照您的要求搜索dTable。示例搜索如下:

string strExpr = null; 

strSearch = "Name LIKE 'Pet%'"; 

DataRow[] Rows = null; 

Rows = dTable.Select(strSearch); 


for (i = 0; i <= Rows.GetUpperBound(0); i++) { 
    MessageBox.Show(Row(i)(0).ToString()); 

} 

請讓我知道改進。