如果值在此行中并且 return 它如何获取行号
How to get the row number if value is in this row and return it
我不确定我问的问题是否正确。
基本上我想遍历所有行并检查 Cells[row, 5] 中的值是否 = nrNummer。如果是这样,我希望行号像 realrow 中的 30 和 return 它。我不知道如何 return 数字或者 "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
}
return realrow; //The name'realrow' does not exist in the current context
发生此错误是因为您在 if
...
中声明了 int realrow
做这样的事情:
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;在 if 之外,这样你就可以 return 它。
编辑:
对于计算机开销的问题,return row if enter in if, if not return -1 (row is not founded.)
您不必等待 for 循环完成。如果我理解你的功能,一旦你找到了价值,你不必继续你的搜索,并且可以直接 return 这个价值,例如,而不是 :
if(ws.Cells[row, 5].Value.ToString()==nrNummer)
{
int realrow = row;
}
你可以简单地:
if(ws.Cells[row, 5].Value.ToString()==nrNummer)
{
return row;
}
最后,您可以直接 return -1
代替 return realrow
或其他任何东西,因为只有找不到搜索到的值时才会触发此 return。
更好的方法是在找到值后立即 return,而不是在 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
}
我不确定我问的问题是否正确。
基本上我想遍历所有行并检查 Cells[row, 5] 中的值是否 = nrNummer。如果是这样,我希望行号像 realrow 中的 30 和 return 它。我不知道如何 return 数字或者 "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
}
return realrow; //The name'realrow' does not exist in the current context
发生此错误是因为您在 if
...
int realrow
做这样的事情:
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;在 if 之外,这样你就可以 return 它。
编辑:
对于计算机开销的问题,return row if enter in if, if not return -1 (row is not founded.)
您不必等待 for 循环完成。如果我理解你的功能,一旦你找到了价值,你不必继续你的搜索,并且可以直接 return 这个价值,例如,而不是 :
if(ws.Cells[row, 5].Value.ToString()==nrNummer)
{
int realrow = row;
}
你可以简单地:
if(ws.Cells[row, 5].Value.ToString()==nrNummer)
{
return row;
}
最后,您可以直接 return -1
代替 return realrow
或其他任何东西,因为只有找不到搜索到的值时才会触发此 return。
更好的方法是在找到值后立即 return,而不是在 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
}