locale = $calculation->getLocale(); } protected function tearDown(): void { $calculation = Calculation::getInstance(); $calculation->setLocale($this->locale); } public function testDefault(): void { $spreadsheet = new Spreadsheet(); $writer = new HtmlWriter($spreadsheet); // Default change with release 4.0.0 self::assertTrue($writer->getBetterBoolean()); $spreadsheet->disconnectWorksheets(); } public function setBetter(HtmlWriter $writer): void { $writer->setBetterBoolean(true); } public function setNotBetter(HtmlWriter $writer): void { $writer->setBetterBoolean(false); } public function testBetterBoolean(): void { $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); $sheet->getCell('A1')->setValue(1); $sheet->getCell('B1')->setValue('Hello'); $sheet->getCell('C1')->setValue(true); $sheet->getCell('D1')->setValue('=IF(1>2, TRUE, FALSE)'); $sheet->getCell('E1')->setValueExplicit(1, DataType::TYPE_STRING); $sheet->getCell('F1')->setValue('="A"&"B"'); $sheet->getCell('G1')->setValue('=1+2'); $reloaded = $this->writeAndReload($spreadsheet, 'Html'); $falseTrue = Calculation::getInstance($spreadsheet)->getFalseTrueArray(); $countPortTrue = 0; $portTrue = 'VERDADEIRO'; $portFalse = 'FALSO'; $countArray = count($falseTrue[1]); for ($i = 0; $i < $countArray; ++$i) { if ($falseTrue[1][$i] === $portTrue) { ++$countPortTrue; self::assertSame($portFalse, $falseTrue[0][$i]); } } self::assertSame(2, $countPortTrue, '1 for pt, 1 for pt-br'); $spreadsheet->disconnectWorksheets(); $rsheet = $reloaded->getActiveSheet(); self::assertSame(1, $rsheet->getCell('A1')->getValue()); self::assertSame('Hello', $rsheet->getCell('B1')->getValue()); self::assertTrue($rsheet->getCell('C1')->getValue()); self::assertFalse($rsheet->getCell('D1')->getValue()); self::assertSame('1', $rsheet->getCell('E1')->getValue()); self::assertSame('AB', $rsheet->getCell('F1')->getValue()); self::assertSame(3, $rsheet->getCell('G1')->getValue()); $reloaded->disconnectWorksheets(); } public function testNotBetterBoolean(): void { $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); $sheet->getCell('A1')->setValue(1); $sheet->getCell('B1')->setValue('Hello'); $sheet->getCell('C1')->setValue(true); $sheet->getCell('D1')->setValue('=IF(1>2, TRUE, FALSE)'); $sheet->getCell('E1')->setValueExplicit(1, DataType::TYPE_STRING); $sheet->getCell('F1')->setValue('="A"&"B"'); $sheet->getCell('G1')->setValue('=1+2'); $reloaded = $this->writeAndReload($spreadsheet, 'Html', null, $this->setNotBetter(...)); $spreadsheet->disconnectWorksheets(); $rsheet = $reloaded->getActiveSheet(); self::assertSame(1, $rsheet->getCell('A1')->getValue()); self::assertSame('Hello', $rsheet->getCell('B1')->getValue()); self::assertSame('TRUE', $rsheet->getCell('C1')->getValue()); self::assertSame('FALSE', $rsheet->getCell('D1')->getValue()); self::assertSame(1, $rsheet->getCell('E1')->getValue()); self::assertSame('AB', $rsheet->getCell('F1')->getValue()); self::assertSame(3, $rsheet->getCell('G1')->getValue()); $reloaded->disconnectWorksheets(); } public function testLocale(): void { $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); $sheet->getCell('A1')->setValue(1); $sheet->getCell('B1')->setValue('Hello'); $sheet->getCell('C1')->setValue(true); $sheet->getCell('D1')->setValue('=IF(1>2, TRUE, FALSE)'); $sheet->getCell('E1')->setValueExplicit(1, DataType::TYPE_STRING); $sheet->getCell('F1')->setValue('="A"&"B"'); $sheet->getCell('G1')->setValue('=1+2'); $calc = Calculation::getInstance(); $calc->setLocale('fr'); $writer = new HtmlWriter($spreadsheet); $writer->setBetterBoolean(true); $html = $writer->generateHtmlAll(); self::assertStringNotContainsString('TRUE', $html); self::assertStringContainsString('VRAI', $html); self::assertStringContainsString('FAUX', $html); self::assertStringContainsString('1', $html); self::assertStringContainsString('AB', $html); self::assertStringContainsString('3', $html); $reloaded = $this->writeAndReload($spreadsheet, 'Html', null, $this->setBetter(...)); $spreadsheet->disconnectWorksheets(); $rsheet = $reloaded->getActiveSheet(); self::assertSame(1, $rsheet->getCell('A1')->getValue()); self::assertSame('Hello', $rsheet->getCell('B1')->getValue()); self::assertTrue($rsheet->getCell('C1')->getValue()); self::assertFalse($rsheet->getCell('D1')->getValue()); self::assertSame('1', $rsheet->getCell('E1')->getValue()); self::assertSame('AB', $rsheet->getCell('F1')->getValue()); self::assertSame(3, $rsheet->getCell('G1')->getValue()); $reloaded->disconnectWorksheets(); } public function testInline(): void { $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); $sheet->setPrintGridlines(true); $sheet->getCell('A1')->setValue(1); $sheet->getCell('B1')->setValue('Hello'); $sheet->getCell('C1')->setValue(true); $sheet->getCell('D1')->setValue('=IF(1>2, TRUE, FALSE)'); $sheet->getCell('E1')->setValueExplicit(1, DataType::TYPE_STRING); $sheet->getCell('F1')->setValue('="A"&"B"'); $sheet->getCell('G1')->setValue('=1+2'); $calc = Calculation::getInstance(); $calc->setLocale('fr'); $writer = new HtmlWriter($spreadsheet); $writer->setBetterBoolean(true); $writer->setUseInlineCss(true); $html = $writer->generateHtmlAll(); $html = str_replace('vertical-align:bottom; color:#000000; font-family:\'Calibri\'; font-size:11pt; ', '', $html); $html = str_replace(' width:42pt"', '"', $html); self::assertStringNotContainsString('TRUE', $html); self::assertStringContainsString('1', $html); self::assertStringContainsString('Hello', $html); self::assertStringContainsString('VRAI', $html); self::assertStringContainsString('FAUX', $html); self::assertStringContainsString('1', $html); self::assertStringContainsString('AB', $html); self::assertStringContainsString('3', $html); $reloaded = $this->writeAndReload($spreadsheet, 'Html', null, $this->setBetter(...)); $spreadsheet->disconnectWorksheets(); $rsheet = $reloaded->getActiveSheet(); self::assertSame(1, $rsheet->getCell('A1')->getValue()); self::assertSame('Hello', $rsheet->getCell('B1')->getValue()); self::assertTrue($rsheet->getCell('C1')->getValue()); self::assertFalse($rsheet->getCell('D1')->getValue()); self::assertSame('1', $rsheet->getCell('E1')->getValue()); self::assertSame('AB', $rsheet->getCell('F1')->getValue()); self::assertSame(3, $rsheet->getCell('G1')->getValue()); $reloaded->disconnectWorksheets(); } public function testForeignNoLocale(): void { $fragment = '' . '' . '' . '' // Bulgarian TRUE . '' // Finnish FALSE . '' . '' . '' . '
1HelloИСТИНАEPÄTOSIwhatevertRuE1
'; $reader = new HtmlReader(); $spreadsheet = $reader->loadFromString($fragment); $sheet = $spreadsheet->getActiveSheet(); self::assertSame(1, $sheet->getCell('A1')->getValue()); self::assertSame('Hello', $sheet->getCell('B1')->getValue()); self::assertTrue($sheet->getCell('C1')->getValue()); self::assertFalse($sheet->getCell('D1')->getValue()); self::assertSame('whatever', $sheet->getCell('E1')->getValue()); self::assertTrue($sheet->getCell('F1')->getValue()); self::assertSame('1', $sheet->getCell('G1')->getValue()); $spreadsheet->disconnectWorksheets(); } public function testNoPreCalc(): void { $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); $sheet->setCellValue('A1', true); $writer = new HtmlWriter($spreadsheet); $writer->setPreCalculateFormulas(false); $writer->setBetterBoolean(true); $html = $writer->generateHtmlAll(); self::assertStringContainsString('TRUE', $html); $spreadsheet->disconnectWorksheets(); } }