Issue2082Test.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Writer\Xlsx;
  3. use PhpOffice\PhpSpreadsheet\Shared\File;
  4. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  5. use PhpOffice\PhpSpreadsheet\Writer\Xlsx as Writer;
  6. use PHPUnit\Framework\TestCase;
  7. class Issue2082Test extends TestCase
  8. {
  9. public function testBoolWrite(): void
  10. {
  11. // Problem writing boolean function values is detected only when
  12. // opening spreadsheet in Excel 2007-2016. Test verifies that
  13. // value field is written correctly for those versions.
  14. $outputFilename = File::temporaryFilename();
  15. $spreadsheet = new Spreadsheet();
  16. $worksheet = $spreadsheet->getActiveSheet();
  17. $worksheet->fromArray(['A', 'B', 'C', 'D']);
  18. $worksheet->getCell('A2')->setValue('=A1<>"A"');
  19. $worksheet->getCell('A3')->setValue('=A1="A"');
  20. $worksheet->getCell('B2')->setValue('=LEFT(B1, 0)');
  21. $worksheet->getCell('B3')->setValue('=B2=""');
  22. $writer = new Writer($spreadsheet);
  23. $writer->save($outputFilename);
  24. $zipfile = "zip://$outputFilename#xl/worksheets/sheet1.xml";
  25. $contents = file_get_contents($zipfile);
  26. unlink($outputFilename);
  27. if ($contents === false) {
  28. self::fail('Unable to open file');
  29. } else {
  30. self::assertStringContainsString('<c r="A2" t="b"><f>A1&lt;&gt;&quot;A&quot;</f><v>0</v></c>', $contents);
  31. self::assertStringContainsString('<c r="A3" t="b"><f>A1=&quot;A&quot;</f><v>1</v></c>', $contents);
  32. self::assertStringContainsString('<c r="B2" t="str"><f>LEFT(B1, 0)</f><v></v></c>', $contents);
  33. self::assertStringContainsString('<c r="B3" t="b"><f>B2=&quot;&quot;</f><v>1</v></c>', $contents);
  34. }
  35. }
  36. }