9552172b85
CALCULATION_REGEXP_CELLREF is not sufficiently robust. It treats some perfectly legal defined names, e.g. A1A, as cell refs. When the Xlsx Writer tries to save a worksheet which uses such a name in a formula in a cell, it throws an exception. The new DefinedNameConfusedForCellTest is a simple demonstration. The Regexp has been changed to ensure the name starts on a Word boundary, and to make sure it is not followed by a word character or period. This fixes the problem, and does not appear to cause any regression problems in the test suite. Closes #1263
23 lines
756 B
PHP
23 lines
756 B
PHP
<?php
|
|
|
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation;
|
|
|
|
use PhpOffice\PhpSpreadsheet\Shared\File;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
class DefinedNameConfusedForCellTest extends TestCase
|
|
{
|
|
public function testDefinedName()
|
|
{
|
|
$obj = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
|
|
$sheet0 = $obj->setActiveSheetIndex(0);
|
|
$sheet0->setCellValue('A1', 2);
|
|
$obj->addNamedRange(new \PhpOffice\PhpSpreadsheet\NamedRange('A1A', $sheet0, 'A1'));
|
|
$sheet0->setCellValue('B1', '=2*A1A');
|
|
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($obj, 'Xlsx');
|
|
$filename = tempnam(File::sysGetTempDir(), 'phpspreadsheet-test');
|
|
$writer->save($filename);
|
|
self::assertTrue(true);
|
|
}
|
|
}
|