Сравнение столбца формулы со значением столбца в Excel - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть две колонки в листе Excel.Я заполняю первый столбец формулой, и у меня есть некоторые значения во втором столбце.Теперь я хочу сравнить эти два столбца и мне нужно отобразить True / false в третьем столбце.Но когда я использую условие «ЕСЛИ», я получаю ЛОЖЬ.Вот мой код.

Формулировка столбца

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");
}

Сравнение столбца формулы и столбца нормального значения:

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 всегда равно нулю, потому что это столбец формулы.

Я пробовал по-разному, но не смог найти решение.Может кто-нибудь мне помочь?Что я делаю не так?

1 Ответ

0 голосов
/ 14 февраля 2019

Вам нужно будет позвонить worksheet.Calculate(); после записи формул в ячейки, чтобы фактически вычислить значения.Одного вызова после первого цикла for достаточно.

Я проверил это в тестовом проекте.

РЕДАКТИРОВАТЬ: Если worksheet.Calculate () не работает, вы можете попробовать xlPackage.Workbook.Calculate();

Вот ссылка надокументация: EPPlus Расчетная документация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...