首页 > 解决方案 > 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);

任何建议表示赞赏 - 谢谢 - 乔恩

标签: phpupgradephpspreadsheet

解决方案


这是我解决这个问题的方法,以防它帮助像我一样不熟悉 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#!”


推荐阅读