Ошибка при расчете формулы из файла excel с помощью PHPSpreadsheet
При попытке выполнить такой код:
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
$reader->setReadDataOnly (true);
$spreadsheet = $reader->load ("test.xlsx");
$sheet = $spreadsheet->getActiveSheet ();
$sheet->getCell ('A1')->getCalculatedValue ();
Получаю такую ошибку:
Fatal error: Uncaught PhpOffice\PhpSpreadsheet\Calculation\Exception: Sheet1!A1 -> internal error in W:\domains\excel\vendor\phpoffice\phpspreadsheet\src\PhpSpreadsheet\Cell\Cell.php:275 Stack trace: #0 W:\domains\excel\testing.php(18): PhpOffice\PhpSpreadsheet\Cell\Cell->getCalculatedValue() #1 {main} thrown in W:\domains\excel\vendor\phpoffice\phpspreadsheet\src\PhpSpreadsheet\Cell\Cell.php on line 275
Формула в ячейке A1:
=ЕСЛИ(C23=1;ЕСЛИ(C21=0;ЕСЛИ(C38=E38;СЦЕПИТЬ(ТЕКСТ(AB15;"# ##0");" - первые ";W13;" мес. ";" ";);0);0);ЕСЛИ(C21=0;ЕСЛИ(C38=E38;СЦЕПИТЬ(ТЕКСТ(Z15;"# ##0");" - первые ";W13;" мес. ";" ";);0);0))
Значения других ячеек при этом:
C23 - 1
C21 - 1
C38 - 8
E38 - 8
AB15 - 118593.75
W13 - 96
Z15 - 120468.75
В самом файле excel формула просчитывается корректно, ошибок не возникает, получается 0. Как исправить данную ошибку?
Ответы (1 шт):
Автор решения: Платон
→ Ссылка
Проблема заключается в знаке ';' после заключительного аргумента, перед закрывающей скобкой функции excel:
СЦЕПИТЬ(ТЕКСТ(AB15;"# ##0");" - первые ";W13;" мес. ";" ";)
По всей видимости, excel поддерживает такой синтаксис, а вот PHPSpreadsheet - нет.