mirror of
https://github.com/PHPOffice/PhpSpreadsheet.git
synced 2026-08-24 23:38:17 +00:00
fd14da1675
* Defined names/formulae in ODS are prefixed by $$ when used in a formula; so we need to strip this out to fully convert them to an Excel formula * Test for ODS Writer for DefinedNames
34 lines
1.2 KiB
PHP
34 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace PhpOffice\PhpSpreadsheetTests\Writer\Ods;
|
|
|
|
use PhpOffice\PhpSpreadsheet\NamedFormula;
|
|
use PhpOffice\PhpSpreadsheet\NamedRange;
|
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
|
use PhpOffice\PhpSpreadsheetTests\Functional\AbstractFunctional;
|
|
|
|
class DefinedNamesTest extends AbstractFunctional
|
|
{
|
|
public function testDefinedNamesWriter(): void
|
|
{
|
|
$spreadsheet = new Spreadsheet();
|
|
$worksheet = $spreadsheet->getActiveSheet();
|
|
|
|
$dataSet = [
|
|
[7, 'x', 5],
|
|
['=', '=FORMULA'],
|
|
];
|
|
$worksheet->fromArray($dataSet, null, 'A1');
|
|
|
|
$spreadsheet->addDefinedName(new NamedRange('FIRST', $worksheet, '$A$1'));
|
|
$spreadsheet->addDefinedName(new NamedRange('SECOND', $worksheet, '$C$1'));
|
|
$spreadsheet->addDefinedName(new NamedFormula('FORMULA', $worksheet, '=FIRST*SECOND'));
|
|
|
|
$reloaded = $this->writeAndReload($spreadsheet, 'Ods');
|
|
|
|
self::assertSame(7, $reloaded->getActiveSheet()->getCell('FIRST')->getValue());
|
|
self::assertSame(5, $reloaded->getActiveSheet()->getCell('SECOND')->getValue());
|
|
self::assertSame(35, $reloaded->getActiveSheet()->getCell('B2')->getCalculatedValue());
|
|
}
|
|
}
|