CondNumFmtTest.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Reader\Xlsx;
  3. use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
  4. use PhpOffice\PhpSpreadsheet\Style\Conditional;
  5. use PHPUnit\Framework\TestCase;
  6. class CondNumFmtTest extends TestCase
  7. {
  8. public function testLoadCondNumFmt(): void
  9. {
  10. $filename = 'tests/data/Reader/XLSX/condfmtnum.xlsx';
  11. $reader = new Xlsx();
  12. $spreadsheet = $reader->load($filename);
  13. $worksheet = $spreadsheet->getActiveSheet();
  14. // NumberFormat explicitly set in following conditional style
  15. $conditionalStyle = $worksheet->getConditionalStyles('A1:A3');
  16. self::assertNotEmpty($conditionalStyle);
  17. $conditionalRule = $conditionalStyle[0];
  18. $conditions = $conditionalRule->getConditions();
  19. self::assertNotEmpty($conditions);
  20. self::assertEquals(Conditional::CONDITION_EXPRESSION, $conditionalRule->getConditionType());
  21. self::assertEquals('MONTH(A1)=10', $conditions[0]);
  22. $numfmt = $conditionalRule->getStyle()->getNumberFormat()->getFormatCode();
  23. self::assertEquals('yyyy/mm/dd', $numfmt);
  24. // NumberFormat not set in following conditional style
  25. $conditionalStyle = $worksheet->getConditionalStyles('B1');
  26. self::assertNotEmpty($conditionalStyle);
  27. $conditionalRule = $conditionalStyle[0];
  28. $conditions = $conditionalRule->getConditions();
  29. self::assertNotEmpty($conditions);
  30. self::assertEquals(Conditional::CONDITION_EXPRESSION, $conditionalRule->getConditionType());
  31. self::assertEquals('AND(B1>=2000,B1<3000)', $conditions[0]);
  32. $numfmt = $conditionalRule->getStyle()->getNumberFormat()->getFormatCode();
  33. self::assertEquals('', $numfmt);
  34. }
  35. }