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