将数组导出为 .xlsx 文件时,如何解决此 PhpSpreadsheet 错误? (设置公式的问题)

How can I solve this PhpSpreadsheet Error, when exporting array as .xlsx file? (problem with setting a formula)

我试图使用此代码导出 Excel 文件:

$spreadsheet = new Spreadsheet();
$xlsx = $spreadsheet->getActiveSheet();
$xlsx->fromArray($myArray, null, 'A1');
$writer = new Xlsx($spreadsheet);

很遗憾,发生了这个错误:

PhpOffice\PhpSpreadsheet\Calculation\Exception
Worksheet!K3 -> Trying to access array offset on value of type null

我想在 K3 列中存储一个公式,"=G3+(H3+I3)*1,5+J3*2",这可能就是问题所在。

我正在寻找解决方案,但我发现了类似的问题 here。我在我的 DefaultValueBinder.php 文件中发现了非常相似的代码,并且我尝试根据得分最高的答案对其进行更改。我改变了这个:

elseif (is_string($value) && $value[0] === '=' && strlen($value) > 1){
    return DataType::TYPE_FORMULA;
}

进入这个:

elseif (is_string($value) && strpos($value,'=') === 0 && strlen($value) > 1){
    return DataType::TYPE_FORMULA;
}

但这并没有解决我的问题。我删除了这部分代码进行测试并成功导出,但是由于缺少删除的部分代码,我的公式没有计算出来(我不得不点击文件中每个带有公式的单元格,然后点击回车来计算它)。

所以我可能非常接近发现问题,但我被卡住了。我该如何解决这个问题?

我发现了问题:

我在公式字符串 "=G3+(H3+I3)*1,5+J3*2" 中使用了逗号。用这样的点替换后 "=G3+(H3+I3)*1.5+J3*2" 一切正常。

奇怪的是我的错误没有被称为 Formula Error 或类似的东西。当我之前测试我的公式时(我在那里放了一些不正确的值,比如=A3+fsfkldk),导出成功,只有带有公式的单元格显示为#######。所以我很惊讶逗号是个问题,特别是在 Excel 中,浮点数用逗号显示,而不是点。