php - PhpSpreadsheet - 升级到 PHP 7.4.6 - 现在设置公式会导致“尝试访问 null 类型值的数组偏移量”异常
问题描述
我知道有很多帖子都存在同样的错误,但似乎没有一个帖子解决了这个特定问题。
我正在使用 PHPSpreadsheet 将应用程序从 PHP 7.3.22 升级到 7.4.6。PHP 7.4.6 在单元格中设置公式时抛出空异常错误。下面的代码片段说明了这个问题:
$file_name = './uploads/helloworld.xlsx';
$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
// these lines work with PHP Versions 7.3.22 and 7.4.6
$spreadsheet->getActiveSheet()->setCellValue('A1', '1');
$spreadsheet->getActiveSheet()->setCellValue('A2', '2');
// this line causes the exception only with PHP Version 7.4.6
$spreadsheet->getActiveSheet()->setCellValue('A3', "=A1+A2");
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
// the exception gets thrown here
$writer->save($file_name);
$spreadsheet->disconnectWorksheets();
unset($spreadsheet);
任何建议表示赞赏 - 谢谢 - 乔恩
解决方案
这是我解决这个问题的方法,以防它帮助像我一样不熟悉 PHP 的其他人。
我在任何地方都找不到这个文档——但显然 PHP 7.3 和 PHPSpreadsheet 1.6.0 存在兼容性问题。所以解决方案是升级 PHPSpreadsheet。以下是我解决此问题的步骤:
为了确定我安装的版本,我这样做了:
composer show
这显示我安装的版本为 1.6.0。当前版本(在我写这篇文章时)是 1.8.0。
要升级到最新版本,我这样做了:
composer require phpoffice/phpspreadsheet -w --prefer-source
这将 PHPSpreadhseet 从 1.6.0 升级到 1.8.0,这解决了问题。
“......正是这样的时候,我怀念 C#!”
推荐阅读
- android - 可以从片段访问活动的属性和功能吗?
- soap - 使用 SoapClient 发送空字符串
- javascript - 如何在没有 jQuery 的情况下进行某些滚动后使 div 跟随?
- debugging - Eclipse CDT:附加到本地应用程序丢失
- python - 一个热编码返回最后一个分类值的所有 0 向量
- jupyter-notebook - 如何解决谷歌 colab 上没有名为“nltk.translate.meteor_score”的模块
- kubernetes - microk8s - helm3 /函数“查找”未定义
- javascript - 从孩子那里获取道具——默认值
- javascript - 没有服务器的 jQuery.load
- java - Ubuntu 18 降级 openjdk 8 版本