使用输入字符串匹配行中的单元格

时间:2015-06-10 15:55:53

标签: c# excel

我基本上试图从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");
    }
}

4 个答案:

答案 0 :(得分:1)

def toFile(debugger, command, result, dict):
    f=open("/Users/user/temp.txt","w")
    debugger.SetOutputFileHandle(f,True);
    debugger.HandleCommand(command)  
    f.close()
    debugger.SetOutputFileHandle(sys.stdout, True)

答案 1 :(得分:0)

我仍然会使用foreach循环,然后添加一个简单的计数器并在每次循环时通过counter++递增它,当你找到它时你可以添加该值&数据到集合,以便稍后可以引用它。

foreach比for循环更安全,有时候循环更受欢迎,但我不认为这是其中之一。

答案 2 :(得分:0)

你的错误不是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");
    }
}

答案 3 :(得分:0)

您可以通过以下代码解决它 如果你想匹配一些excel列E.G.的值。的 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);
    }
 }