FormulaErrTest.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Writer\Xls;
  3. use PhpOffice\PhpSpreadsheet\IOFactory;
  4. use PhpOffice\PhpSpreadsheet\NamedRange;
  5. use PhpOffice\PhpSpreadsheet\Shared\File;
  6. use PHPUnit\Framework\TestCase;
  7. class FormulaErrTest extends TestCase
  8. {
  9. public function testFormulaError(): void
  10. {
  11. $obj = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
  12. $sheet0 = $obj->setActiveSheetIndex(0);
  13. $sheet0->setCellValue('A1', 2);
  14. $obj->addNamedRange(new NamedRange('DEFNAM', $sheet0, '$A$1'));
  15. $sheet0->setCellValue('B1', '=2*DEFNAM');
  16. $sheet0->setCellValue('C1', '=DEFNAM=2');
  17. $sheet0->setCellValue('D1', '=CONCAT("X",DEFNAM)');
  18. $writer = IOFactory::createWriter($obj, 'Xls');
  19. $filename = File::temporaryFilename();
  20. $writer->save($filename);
  21. $reader = IOFactory::createReader('Xls');
  22. $robj = $reader->load($filename);
  23. unlink($filename);
  24. $sheet0 = $robj->setActiveSheetIndex(0);
  25. $a1 = $sheet0->getCell('A1')->getCalculatedValue();
  26. self::assertEquals(2, $a1);
  27. $b1 = $sheet0->getCell('B1')->getCalculatedValue();
  28. self::assertEquals(4, $b1);
  29. $c1 = $sheet0->getCell('C1')->getCalculatedValue();
  30. $tru = true;
  31. self::assertEquals($tru, $c1);
  32. $d1 = $sheet0->getCell('D1')->getCalculatedValue();
  33. self::assertEquals('X2', $d1);
  34. }
  35. }