问题描述
我知道有很多帖子都有同样的错误,但似乎没有一个解决这个特定问题。
我正在将使用 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);
感谢任何建议 - 谢谢 - Jon
解决方法
以下是我解决这个问题的方法,以防它可以帮助像我一样不熟悉 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#!”