将数组导出为 .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 中,浮点数用逗号显示,而不是点。
我试图使用此代码导出 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 中,浮点数用逗号显示,而不是点。