如果值在此行中,如何获取行号并返回

时间:2019-03-20 11:37:13

标签: c# excel return epplus

我不确定我问的是正确的问题。

基本上,我想遍历所有行并检查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
    }

3 个答案:

答案 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
    }