我有这样的excel文件
id | Name | Address | Other |
-----------------------------------
#1 | xxxx | xxxx | xxxx |
#2 | yyyy | yyyy | yyyy |
现在我需要使用用户输入的字符串
搜索Excel文档中的名称字段例如
用户输入文字--->的 XXXX
我想在excel中搜索名称字段的字符串 文件
如果它存在意味着显示msg框..
我怎么能用C#.net
做这个
任何人帮助我
答案 0 :(得分: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());
}
请告诉我改进情况。
答案 1 :(得分: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;
}
}
没有测试代码,但它应该可以工作。