微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PhpSpreadsheet - 升级到 PHP 7.4.6 - 现在设置公式会导致“尝试访问类型为 null 的值的数组偏移量”异常

如何解决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);

感谢任何建议 - 谢谢 - 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#!”

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。