Формула phpspreadsheet не принимается

С phpspreadsheet я не могу поместить формулу в ячейку. Я получаю сообщение об ошибке: L43 -> Ошибка формулы: произошла непредвиденная ошибка

Хотя, когда я помещаю эту формулу непосредственно в файл Excel, она работает хорошо.

Моя формула: "=ЕСЛИ(СУММ(J2:J41)<>СУММ(L2:L41);"1";"2")".

Есть мой код:

$sheet->setCellValue($cell, $formula);

Я также тестирую с

$sheet->setCellValueExplicit($cell, $formula, DataType::TYPE_FORMULA);

Но я тоже не работаю.

Я думал, что ошибка была из-за кавычек в формуле, поэтому я добавил функцию addlashes php

$formula = addslashes("=IF(SUM(J2:J41)<>SUM(L2:L41);"1";"2")");

И я тестирую с цифрами

$formula = "=IF(SUM(J2:J41)<>SUM(L2:L41);1;2)";

Когда я вошел в исходный код библиотеки, если обнаружил, что символ, который генерирует ошибку, был точкой с запятой (;).

Я не знаю, если источником проблемы является моя формула или библиотека.

Любая помощь приветствуется. Спасибо.

Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Что нового в PHP 8.1?
Что нового в PHP 8.1?
Если вы все еще используете PHP 7, то эта статья для вас. В PHP 8, а именно в PHP 8.1, встроены некоторые очень востребованные функции, которые вам...
Разработка LMS на заказ для повышения эффективности работы и обучения
Разработка LMS на заказ для повышения эффективности работы и обучения
За последние годы в образовании произошла большая революция, и сегодня почти все учебные заведения делают упор на эксклюзивное управление учебным...
0
0
21
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

надеюсь, это поможет: https://phpspreadsheet.readthedocs.io/en/latest/topics/recipes/#write-a-formula-into-a-cell что-то, что будет делать то, что вы хотите:

$formula1 =  "=IF(SUM(J2:J41)<>SUM(L2:L41),\"1\",\"2\")";
$formula2 =  "=IF(SUM(J2:J41)<>SUM(L2:L41),1,2)";
$sheet->setCellValueExplicit('A4', $formula2, Cell\DataType::TYPE_FORMULA);
$sheet->setCellValue('A5', $formula2);

как вы можете видеть в документации, используйте для разделения операндов, а не;

Большое спасибо, это было только это.

sba 17.05.2022 14:52

Другие вопросы по теме