 9552172b85
			
		
	
	
		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);
 | |
|     }
 | |
| }
 |