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