StartsWithHashTest.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Writer\Xlsx;
  3. use PhpOffice\PhpSpreadsheet\Cell\DataType;
  4. use PhpOffice\PhpSpreadsheet\Reader\Xlsx as Reader;
  5. use PhpOffice\PhpSpreadsheet\Shared\File;
  6. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  7. use PhpOffice\PhpSpreadsheet\Writer\Xlsx as Writer;
  8. use PHPUnit\Framework\TestCase;
  9. use ZipArchive;
  10. class StartsWithHashTest extends TestCase
  11. {
  12. public function testStartWithHash(): void
  13. {
  14. $outputFilename = File::temporaryFilename();
  15. $spreadsheet = new Spreadsheet();
  16. $sheet = $spreadsheet->getActiveSheet();
  17. $sheet->setCellValueExplicit('A1', '#define M', DataType::TYPE_STRING);
  18. $sheet->setCellValue('A2', '=A1');
  19. $sheet->setCellValue('A3', '=UNKNOWNFUNC()');
  20. $writer = new Writer($spreadsheet);
  21. $writer->save($outputFilename);
  22. $reader = new Reader();
  23. $sheet = $reader->load($outputFilename);
  24. unlink($outputFilename);
  25. self::assertSame('#define M', $sheet->getActiveSheet()->getCell('A1')->getValue());
  26. self::assertSame('#define M', $sheet->getActiveSheet()->getCell('A2')->getCalculatedValue());
  27. self::assertSame('f', $sheet->getActiveSheet()->getCell('A3')->getDataType());
  28. self::assertSame('#NAME?', $sheet->getActiveSheet()->getCell('A3')->getCalculatedValue());
  29. self::assertSame('f', $sheet->getActiveSheet()->getCell('A3')->getDataType());
  30. }
  31. public function testStartWithHashReadRaw(): void
  32. {
  33. // Make sure raw data indicates A3 is an error, but A2 isn't.
  34. $outputFilename = File::temporaryFilename();
  35. $spreadsheet = new Spreadsheet();
  36. $sheet = $spreadsheet->getActiveSheet();
  37. $sheet->setCellValueExplicit('A1', '#define M', DataType::TYPE_STRING);
  38. $sheet->setCellValue('A2', '=A1');
  39. $sheet->setCellValue('A3', '=UNKNOWNFUNC()');
  40. $writer = new Writer($spreadsheet);
  41. $writer->save($outputFilename);
  42. $zip = new ZipArchive();
  43. $zip->open($outputFilename);
  44. $resultSheet1Raw = $zip->getFromName('xl/worksheets/sheet1.xml');
  45. $zip->close();
  46. unlink($outputFilename);
  47. self::assertStringContainsString('<c r="A3" t="e">', $resultSheet1Raw);
  48. self::assertStringContainsString('<c r="A2" t="str">', $resultSheet1Raw);
  49. }
  50. }