63 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			63 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace PhpOffice\PhpSpreadsheetTests\Writer\Xlsx;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use PhpOffice\PhpSpreadsheet\Cell\DataType;
							 | 
						||
| 
								 | 
							
								use PhpOffice\PhpSpreadsheet\Reader\Xlsx as Reader;
							 | 
						||
| 
								 | 
							
								use PhpOffice\PhpSpreadsheet\Settings;
							 | 
						||
| 
								 | 
							
								use PhpOffice\PhpSpreadsheet\Shared\File;
							 | 
						||
| 
								 | 
							
								use PhpOffice\PhpSpreadsheet\Spreadsheet;
							 | 
						||
| 
								 | 
							
								use PhpOffice\PhpSpreadsheet\Writer\Xlsx as Writer;
							 | 
						||
| 
								 | 
							
								use PHPUnit\Framework\TestCase;
							 | 
						||
| 
								 | 
							
								use ZipArchive;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class StartsWithHashTest extends TestCase
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    public function testStartWithHash(): void
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $outputFilename = tempnam(File::sysGetTempDir(), 'phpspreadsheet-test');
							 | 
						||
| 
								 | 
							
								        Settings::setLibXmlLoaderOptions(null);
							 | 
						||
| 
								 | 
							
								        $spreadsheet = new Spreadsheet();
							 | 
						||
| 
								 | 
							
								        $sheet = $spreadsheet->getActiveSheet();
							 | 
						||
| 
								 | 
							
								        $sheet->setCellValueExplicit('A1', '#define M', DataType::TYPE_STRING);
							 | 
						||
| 
								 | 
							
								        $sheet->setCellValue('A2', '=A1');
							 | 
						||
| 
								 | 
							
								        $sheet->setCellValue('A3', '=UNKNOWNFUNC()');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $writer = new Writer($spreadsheet);
							 | 
						||
| 
								 | 
							
								        $writer->save($outputFilename);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $reader = new Reader();
							 | 
						||
| 
								 | 
							
								        $sheet = $reader->load($outputFilename);
							 | 
						||
| 
								 | 
							
								        unlink($outputFilename);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        self::assertSame('#define M', $sheet->getActiveSheet()->getCell('A1')->getValue());
							 | 
						||
| 
								 | 
							
								        self::assertSame('#define M', $sheet->getActiveSheet()->getCell('A2')->getCalculatedValue());
							 | 
						||
| 
								 | 
							
								        self::assertSame('f', $sheet->getActiveSheet()->getCell('A3')->getDataType());
							 | 
						||
| 
								 | 
							
								        self::assertSame('#NAME?', $sheet->getActiveSheet()->getCell('A3')->getCalculatedValue());
							 | 
						||
| 
								 | 
							
								        self::assertSame('f', $sheet->getActiveSheet()->getCell('A3')->getDataType());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testStartWithHashReadRaw(): void
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        // Make sure raw data indicates A3 is an error, but A2 isn't.
							 | 
						||
| 
								 | 
							
								        $outputFilename = tempnam(File::sysGetTempDir(), 'phpspreadsheet-test');
							 | 
						||
| 
								 | 
							
								        Settings::setLibXmlLoaderOptions(null);
							 | 
						||
| 
								 | 
							
								        $spreadsheet = new Spreadsheet();
							 | 
						||
| 
								 | 
							
								        $sheet = $spreadsheet->getActiveSheet();
							 | 
						||
| 
								 | 
							
								        $sheet->setCellValueExplicit('A1', '#define M', DataType::TYPE_STRING);
							 | 
						||
| 
								 | 
							
								        $sheet->setCellValue('A2', '=A1');
							 | 
						||
| 
								 | 
							
								        $sheet->setCellValue('A3', '=UNKNOWNFUNC()');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $writer = new Writer($spreadsheet);
							 | 
						||
| 
								 | 
							
								        $writer->save($outputFilename);
							 | 
						||
| 
								 | 
							
								        $zip = new ZipArchive();
							 | 
						||
| 
								 | 
							
								        $zip->open($outputFilename);
							 | 
						||
| 
								 | 
							
								        $resultSheet1Raw = $zip->getFromName('xl/worksheets/sheet1.xml');
							 | 
						||
| 
								 | 
							
								        $zip->close();
							 | 
						||
| 
								 | 
							
								        unlink($outputFilename);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        self::assertStringContainsString('<c r="A3" t="e">', $resultSheet1Raw);
							 | 
						||
| 
								 | 
							
								        self::assertStringContainsString('<c r="A2" t="str">', $resultSheet1Raw);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |