| 123456789101112131415161718192021222324252627282930313233343536373839 |
- <?php
- namespace PhpOffice\PhpSpreadsheetTests\Reader\Xlsx;
- use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
- use PhpOffice\PhpSpreadsheet\Style\Conditional;
- use PHPUnit\Framework\TestCase;
- class CondNumFmtTest extends TestCase
- {
- public function testLoadCondNumFmt(): void
- {
- $filename = 'tests/data/Reader/XLSX/condfmtnum.xlsx';
- $reader = new Xlsx();
- $spreadsheet = $reader->load($filename);
- $worksheet = $spreadsheet->getActiveSheet();
- // NumberFormat explicitly set in following conditional style
- $conditionalStyle = $worksheet->getConditionalStyles('A1:A3');
- self::assertNotEmpty($conditionalStyle);
- $conditionalRule = $conditionalStyle[0];
- $conditions = $conditionalRule->getConditions();
- self::assertNotEmpty($conditions);
- self::assertEquals(Conditional::CONDITION_EXPRESSION, $conditionalRule->getConditionType());
- self::assertEquals('MONTH(A1)=10', $conditions[0]);
- $numfmt = $conditionalRule->getStyle()->getNumberFormat()->getFormatCode();
- self::assertEquals('yyyy/mm/dd', $numfmt);
- // NumberFormat not set in following conditional style
- $conditionalStyle = $worksheet->getConditionalStyles('B1');
- self::assertNotEmpty($conditionalStyle);
- $conditionalRule = $conditionalStyle[0];
- $conditions = $conditionalRule->getConditions();
- self::assertNotEmpty($conditions);
- self::assertEquals(Conditional::CONDITION_EXPRESSION, $conditionalRule->getConditionType());
- self::assertEquals('AND(B1>=2000,B1<3000)', $conditions[0]);
- $numfmt = $conditionalRule->getStyle()->getNumberFormat()->getFormatCode();
- self::assertEquals('', $numfmt);
- }
- }
|