将公式列与excel中的值列进行比较

问题描述 投票:0回答:1

我在excel表中有两列。我用公式填充第一列,我在第二列中有一些值。现在我想比较这两列,并需要在第三列中显示True / false。但是当我使用“IF”条件时,我得到的只是假。这是我的代码。

Formulating the column

using (ExcelPackage xlPackage = new ExcelPackage(newFile))
{
    ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets[GetConfigValue("Reconsheet")];
    int totalRows = worksheet.Dimension.End.Row;


    for (int row = startupRow; row <= totalRows; row++)
    {
        //Formula
        string vlookforH = "IF(ISNA(VLOOKUP(C" + row + ",PWA!A:B,2,FALSE)),0,VLOOKUP(C" + row + ",PWA!A:B,2,FALSE))";
        worksheet.Cells[row, 8].Formula = vlookforH;

    }
    xlPackage.Save();
    MessageBox.Show("PWA hours received");
}

Comparing Formula column and Normal value column:

for (int row = startupRow; row <= totalRows; row++)
{
    if (Convert.ToInt32(worksheet.Cells[row, 18].Value) != 0)
    {

        decimal hvalue = (worksheet.Cells[row, 8].Value) != null ? Convert.ToDecimal(worksheet.Cells[row, 8].Value.ToString()) : 0;
        decimal rvalue = (worksheet.Cells[row, 18].Value) != null ? Convert.ToDecimal(worksheet.Cells[row, 18].Value.ToString()) : 0;

        if (hvalue == rvalue)
        {
            worksheet.Cells[row, 31].Value = "True";
        }
        else
        {
            worksheet.Cells[row,31].Value = "False";
            Count = Count + 1;
        }

    }

}

当我调试应用程序时,我意识到hvalue始终为零,因为它是一个公式列。

我尝试过不同的方法,但无法找到解决方案。谁能帮我?我究竟做错了什么?

c# excel epplus
1个回答
0
投票

在将公式写入单元格后,您必须调用worksheet.Calculate();来实际计算值。在第一次for循环后调用它就足够了。

我在测试项目上验证了这一点。

编辑:如果worksheet.Calculate()不起作用,你可以尝试xlPackage.Workbook.Calculate();

以下是文档的链接:EPPlus Calculate Documentation

© www.soinside.com 2019 - 2024. All rights reserved.