RowOnSpreadsheetTest.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\LookupRef;
  3. use PhpOffice\PhpSpreadsheet\NamedRange;
  4. class RowOnSpreadsheetTest extends AllSetupTeardown
  5. {
  6. /**
  7. * @dataProvider providerROWonSpreadsheet
  8. *
  9. * @param mixed $expectedResult
  10. * @param string $cellReference
  11. */
  12. public function testRowOnSpreadsheet($expectedResult, $cellReference = 'omitted'): void
  13. {
  14. $this->mightHaveException($expectedResult);
  15. $sheet = $this->getSheet();
  16. $sheet->setTitle('ThisSheet');
  17. $this->getSpreadsheet()->addNamedRange(new NamedRange('namedrangex', $sheet, '$E$2:$E$6'));
  18. $this->getSpreadsheet()->addNamedRange(new NamedRange('namedrangey', $sheet, '$F$2:$H$2'));
  19. $this->getSpreadsheet()->addNamedRange(new NamedRange('namedrange3', $sheet, '$F$4:$H$4'));
  20. $this->getSpreadsheet()->addNamedRange(new NamedRange('namedrange5', $sheet, '$F$5:$H$5', true));
  21. $sheet1 = $this->getSpreadsheet()->createSheet();
  22. $sheet1->setTitle('OtherSheet');
  23. $this->getSpreadsheet()->addNamedRange(new NamedRange('localname', $sheet1, '$F$6:$H$6', true));
  24. if ($cellReference === 'omitted') {
  25. $sheet->getCell('B3')->setValue('=ROW()');
  26. } else {
  27. $sheet->getCell('B3')->setValue("=ROW($cellReference)");
  28. }
  29. $result = $sheet->getCell('B3')->getCalculatedValue();
  30. self::assertSame($expectedResult, $result);
  31. }
  32. public function providerROWOnSpreadsheet(): array
  33. {
  34. return require 'tests/data/Calculation/LookupRef/ROWonSpreadsheet.php';
  35. }
  36. public function testINDIRECTLocalDefinedName(): void
  37. {
  38. $sheet = $this->getSheet();
  39. $sheet1 = $this->getSpreadsheet()->createSheet();
  40. $sheet1->setTitle('OtherSheet');
  41. $this->getSpreadsheet()->addNamedRange(new NamedRange('newnr', $sheet1, '$F$5:$H$5', true)); // defined locally, only usable on sheet1
  42. $sheet1->getCell('B3')->setValue('=ROW(newnr)');
  43. $result = $sheet1->getCell('B3')->getCalculatedValue();
  44. self::assertSame(5, $result);
  45. $sheet->getCell('B3')->setValue('=ROW(newnr)');
  46. $result = $sheet->getCell('B3')->getCalculatedValue();
  47. self::assertSame('#NAME?', $result);
  48. }
  49. }