ColumnOnSpreadsheetTest.php 2.0 KB

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