getActiveSheet(); $sheet->setCellValue('A1', 1.4); $sheet->setCellValue('B1', 1004.5); $sheet->setCellValue('C1', 1000000.5); ob_start(); $ioWriter = new Csv($spreadsheet); $ioWriter->setDelimiter(';'); $ioWriter->save('php://output'); $output = ob_get_clean(); $spreadsheet->disconnectWorksheets(); self::assertSame('"1.4";"1004.5";"1000000.5"' . PHP_EOL, $output); } public function testNonStringable(): void { $dt = new DateTime(); self::assertSame('', StringHelper::convertToString($dt, false)); $this->expectException(SpreadsheetException::class); $this->expectExceptionMessage('Unable to convert to string'); StringHelper::convertToString($dt); } public function testNoIconv(): void { $string = "\xBF"; // inverted question mark in ISO-8859-1 $expected = '¿'; $from = 'ISO-8859-1'; $to = 'UTF-8'; self::assertSame($expected, StringHelper::convertEncoding($string, $to, $from)); self::assertSame('EUR', StringHelper::convertEncoding('€', 'ISO-8859-1', 'UTF-8'), 'transliterated'); self::assertSame($expected, StringHelperNoIconv::convertEncoding($string, $to, $from)); self::assertSame('?', StringHelperNoIconv::convertEncoding('€', 'ISO-8859-1', 'UTF-8'), 'using MB so no transliteration - just return question mark'); self::assertSame($expected, StringHelperNoIconv2::convertEncoding($string, $to, $from)); self::assertSame('?', StringHelperNoIconv2::convertEncoding('€', 'ISO-8859-1', 'UTF-8'), 'using MB so no transliteration - just return question mark'); self::assertSame($expected, StringHelperNoIconv3::convertEncoding($string, $to, $from)); self::assertSame('?', StringHelperNoIconv3::convertEncoding('€', 'ISO-8859-1', 'UTF-8'), 'using MB so no transliteration - just return question mark'); $noTransliteration = 'ツ'; // There is inconsistency in how //TRANSLIT operates. // On some systems, '?' seems to be used if there is // no other transliteration available. $ignoreResult = '?'; if (StringHelper::getIsIconvEnabled()) { $ignoreResult = iconv('UTF-8', 'ISO-8859-1//IGNORE//TRANSLIT', $noTransliteration); self::assertContains($ignoreResult, ['', '?']); } self::assertSame($ignoreResult, StringHelper::convertEncoding($noTransliteration, 'ISO-8859-1', 'UTF-8'), 'no transliteration available'); self::assertSame('', StringHelper::convertEncoding($noTransliteration, 'ISO-8859-1', 'UTF-8', '//IGNORE'), 'TRANSLIT not used'); } }