59 lines
1.5 KiB
PHP
59 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace PhpOffice\PhpSpreadsheetTests\Writer\Xlsx;
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
class LocaleFloatsTest extends TestCase
|
|
{
|
|
protected $localeAdjusted;
|
|
|
|
protected $currentLocale;
|
|
|
|
protected function setUp(): void
|
|
{
|
|
$this->currentLocale = setlocale(LC_ALL, '0');
|
|
|
|
if (!setlocale(LC_ALL, 'fr_FR.UTF-8')) {
|
|
$this->localeAdjusted = false;
|
|
|
|
return;
|
|
}
|
|
|
|
$this->localeAdjusted = true;
|
|
}
|
|
|
|
protected function tearDown(): void
|
|
{
|
|
if ($this->localeAdjusted) {
|
|
setlocale(LC_ALL, $this->currentLocale);
|
|
}
|
|
}
|
|
|
|
public function testLocaleFloatsCorrectlyConvertedByWriter()
|
|
{
|
|
if (!$this->localeAdjusted) {
|
|
$this->markTestSkipped('Unable to set locale for testing.');
|
|
}
|
|
|
|
$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
|
|
$spreadsheet->getActiveSheet()->setCellValue('A1', 1.1);
|
|
|
|
$filename = 'decimalcomma.xlsx';
|
|
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
|
|
$writer->save($filename);
|
|
|
|
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
|
|
$spreadsheet = $reader->load($filename);
|
|
|
|
$result = $spreadsheet->getActiveSheet()->getCell('A1')->getValue();
|
|
|
|
ob_start();
|
|
var_dump($result);
|
|
preg_match('/(?:double|float)\(([^\)]+)\)/mui', ob_get_clean(), $matches);
|
|
$this->assertArrayHasKey(1, $matches);
|
|
$actual = $matches[1];
|
|
$this->assertEquals('1,1', $actual);
|
|
}
|
|
}
|