Spreadsheetlight Formula не работает

Я использую http://spreadsheetlight.com/ для создания документа Excel. Мне нужно использовать формулу для конкретной ячейки, но она не работает. Код:

report.SetCellValue(string.Format("{0}{1}", Report.CELL_MAP.ACTIVITY_CRU_COL, row), string.Format("=IF({0}{1}=0; 0; ROUND(({2}{1}/{0}{1})*100; 0))", Report.CELL_MAP.ACTIVITY_REAL_MD_VAL_COL, row, Report.CELL_MAP.ACTIVITY_INVOICED_MD_VAL_COL));

Я что-то упускаю? Установка формул, таких как '=E9' хранится в ячейке как формула и работает в итоговом документе. Есть идеи, почему это не работает?

2 ответа

Должны ли быть запятые вместо точек с запятой в формуле? Вот так:

report.SetCellValue(string.Format("{0}{1}", Report.CELL_MAP.ACTIVITY_CRU_COL, row), string.Format("=IF({0}{1}=0, 0, ROUND(({2}{1}/{0}{1})*100, 0))", Report.CELL_MAP.ACTIVITY_REAL_MD_VAL_COL, row, Report.CELL_MAP.ACTIVITY_INVOICED_MD_VAL_COL));

Я только что проверил ответ Винсента по формулам СУММПРОИЗВ и ЕСЛИ и могу подтвердить, что он работает.

Пример СУММПРОИЗВ:

Вместо

      sl.SetCellValue(cellRef, "=SUMPRODUCT(A2:B2;--A1:B1=\"Something\")");

должно быть

      sl.SetCellValue(cellRef, "=SUMPRODUCT(A2:B2,--A1:B1=\"Something\")");

ЕСЛИ пример:

Вместо

      sl.SetCellValue(cellRef, "=IF(A1=\"Something\";1;0)");

должно быть

      sl.SetCellValue(cellRef, "=IF(A1=\"Something\",1,0)");
Другие вопросы по тегам