将行中的单元格与输入字符串匹配
本文关键字:输入 字符 字符串 串匹配 单元格 | 更新日期: 2023-09-27 17:55:23
我基本上是在尝试从 excel 文件中读取并在该文件中找到某个 ID 号。现在它正在将所有行打印为匹配项,我想帮助找出原因。
// input to search for
string value = textBox3.Text;
// verify the input is the correct format
Match match = Regex.Match(value, @".*[0-9].*");
Match myMatch = Regex.Match(value, textBox3.Text);
Console.WriteLine(value);
foreach (DataRow row in xlsDs.Rows)
{
if (match.Success && myMatch.Success)
{
Console.WriteLine(textBox3);
Console.Write(row.ItemArray.ToString());
Console.WriteLine("This was found");
}
}
int rowCount = xlsDs.Rows.Count;
我仍然会使用 foreach 循环,然后添加一个简单的计数器并在每次循环时通过 counter++
递增它,当你找到它时,你可以将该值和数据添加到集合中,以便稍后可以引用它。
foreach 比 for 循环安全得多,有时 for 循环更受欢迎,但我不认为这是其中之一。
你可以通过以下代码来解决它如果要将值与某些 Excel 列(例如 ID)匹配将条件放入 for 循环....因为我认为您想将值与 excel 的某些列相匹配。
string value = textBox3.Text;
Match match = Regex.Match(value, @".*[0-9].*");
Console.WriteLine(value);
int TotalRows = xlsDs.Rows.Count;
for(int i=0;i<TotalRows;i++)
{
DataRow row = xlsDs.Rows[i];
String row_Val=row["Cell_Name"].ToString();//Put Cell you want to match IE ID
Match myMatch = Regex.Match(row_Val, textBox3.Text);
if (match.Success && myMatch.Success)
{
Console.WriteLine(textBox3);
Console.Write(row.ItemArray.ToString());
//Console.WriteLine(row["Cell_Name"]);//if you want to print a specific cell
Console.WriteLine("This was found at row "+i);
}
}
你的错误不是 for vs foreach 循环,而是你正在做的匹配。试试这个。
您也没有正确读取行,您应该只查看所需的一列。将下面的列变量更改为正确的列。
这与您的代码之间的主要区别在于,您希望检查迭代中的每一行,然后如果它是匹配项,请打印一行说明。这是与您最初所做的进行比较,在最初执行的操作中,您比较一个字符串一次,如果匹配,请为每一行一遍又一遍地打印该字符串。
string columnName = "Employee ID"; // change to the correct header
// Check the ID from the textbox to make sure it is valid?
Match match = Regex.Match(textBox3.Text @".*[0-9].*");
for(int i = 0; i < xlsDs.Rows.Count; i++)
{
// get the current row
DataRow row = xlsDs.Rows[i];
// get the ID from the row
string idValue = row[columnName].ToString();
// check if the row value is equal to the textbox entry
bool myMatch = idValue.Equals(textBox3.Text);
// if both of the above are true, do this
if (match.Success && myMatch == true)
{
Console.Write(idValue);
Console.WriteLine(" -This id was found");
}
}