Всем привет!
Недавно после обновления системы до версии PHP 7.4 вместе со всеми вытекающими случилась интересная проблема - штука, которая собирала отчёты начала кидаться в меня ошибками в виде Trying to access array offset on value of type int.
Как ни странно, сама проблема кроется именно в библиотеке PHPExcel, которая по неизвестным причинам не обновляется. Решается довольно легко - посредством редактирования файла DefaultValueBinder.php в самой библиотеке. Но забавная история - далеко не все могут просто вот так редактировать библиотеку, например, если она тянется при помощи composer.
Недолго думая сделал форк этой библиотеки. Предоставляю вам два решения проблемы:
С помощью замены пакета в composer.json
Открываем файл composer.json и во-первых добавляем туда репозиторий. Так же, если вдруг вам нужен, добавляем туда и ExcelBundle.
"repositories": [ { "url": "https://github.com/ruecoder/ExcelBundle.git", "type": "git" }, { "url": "https://github.com/ruecoder/PHPExcel.git", "type": "git" } ],
Затем закидываем в тот же composer.json в блок require сами библиотеки
"require": { "ruecoder/phpexcel": "dev-master", "ruecoder/excelbundle": "dev-master" }
И выполняем composer update
С помощью редактирования библиотеки PHPExcel
Всё просто. Идём по пути и открываем файл vendor/PHPExcel/Classes/PHPExcel/Cell/DefaultValueBinder.php
Нам нужна строка 82 которая выглядит вот так:
} elseif ($pValue[0] === '=' && strlen($pValue) > 1) {
заменяем её на такую
} elseif (0 === strpos($pValue, '=') && strlen($pValue) > 1) {
Всё, готово, всё снова работает как и раньше. :)