我不确定我问的是正确的问题。
基本上,我想遍历所有行并检查Cells [row,5]中的值是否等于nrNummer。如果是这样,我希望在行中像30这样的行号并返回它。我不知道如何返回数字,或者“ for”是错误的方法。下面是我的代码。也许有人知道怎么做
private static int GetRowExcel(string projectName)
{
using (MemoryStream stream = new MemoryStream(bin))
using (ExcelPackage excelPackage = new ExcelPackage(stream))
{
var ws = excelPackage.Workbook.Worksheets["Work"];
string nrNummer = projectName.Split(' ').First();
for (int row = 5; ws.Cells[row, 5].Value != null; row++)
{
if(ws.Cells[row, 5].Value.ToString()==nrNummer)
{ int realrow = row;
}
}
}
return realrow; //The name'realrow' does not exist in the current context
}
答案 0 :(得分:1)
您不必等待for循环完成。如果我了解您的功能,则找到值后,便无需继续搜索,并且可以直接返回该值,例如:
if(ws.Cells[row, 5].Value.ToString()==nrNummer)
{
int realrow = row;
}
您可以简单地:
if(ws.Cells[row, 5].Value.ToString()==nrNummer)
{
return row;
}
最后,您可以用return realrow
代替return -1
或其他任何东西,因为只有在未找到搜索值的情况下,才会触发此返回。
答案 1 :(得分:0)
return realrow; //The name'realrow' does not exist in the current context
发生此错误是因为您在int realrow
内声明了if
...
执行以下操作:
private static int GetRowExcel(string projectName)
{
using (MemoryStream stream = new MemoryStream(bin))
using (ExcelPackage excelPackage = new ExcelPackage(stream))
{
var ws = excelPackage.Workbook.Worksheets["Work"];
string nrNummer = projectName.Split(' ').First();
for (int row = 5; ws.Cells[row, 5].Value != null; row++)
{
if(ws.Cells[row, 5].Value.ToString()==nrNummer)
{ return row;
}
}
}
return -1; //The name'realrow' does not exist in the current context
}
我刚刚声明了int realrow = 0;如果不是,则可以将其返回。
编辑:
对于计算机开销的问题,如果输入则返回行,如果不返回则返回-1(未建立行。)
答案 2 :(得分:0)
一种更好的方法是在找到您的值之后立即返回,而不是在for循环中进一步迭代:
private static int GetRowExcel(string projectName)
{
using (MemoryStream stream = new MemoryStream(bin))
using (ExcelPackage excelPackage = new ExcelPackage(stream))
{
var ws = excelPackage.Workbook.Worksheets["Work"];
string nrNummer = projectName.Split(' ').First();
for (int row = 5; ws.Cells[row, 5].Value != null; row++)
{
if(ws.Cells[row, 5].Value.ToString()==nrNummer)
{
return row;
}
}
}
return -1; // return any value that shows that row is not found
}