将行中的单元格与输入字符串匹配

本文关键字:输入 字符 字符串 串匹配 单元格 | 更新日期: 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");
    }
}