Use Cell Value if OldCalculatedValue is Null

This commit is contained in:
oleibman
2026-01-23 18:15:41 -08:00
parent 7aef8b24cc
commit c735e2fc82
3 changed files with 23 additions and 1 deletions
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace PhpOffice\PhpSpreadsheetTests\Worksheet;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx as XlsxWriter;
use PhpOffice\PhpSpreadsheetTests\Functional\AbstractFunctional;
class ToArrayOldCalculatedValueTest extends AbstractFunctional
@@ -25,4 +26,24 @@ class ToArrayOldCalculatedValueTest extends AbstractFunctional
$reloadedSpreadsheet->disconnectWorksheets();
}
private function noPreCalculation(XlsxWriter $writer): void
{
$writer->setPreCalculateFormulas(false);
}
public function testNoPreCalculate(): void
{
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->fromArray([['A', 'B', 'C', '=1+2']]);
$reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xlsx', null, $this->noPreCalculation(...));
$spreadsheet->disconnectWorksheets();
$rsheet = $reloadedSpreadsheet->getActiveSheet();
$rsheet->setCellValue('D1', '=1+3');
$array1 = $rsheet->toArray(formatData: false, calculateFormulas: false, oldCalculatedValue: true);
self::assertSame([['A', 'B', 'C', '=1+3']], $array1, 'uses value of cell if formula was not calculated');
$reloadedSpreadsheet->disconnectWorksheets();
}
}