PHPSpreadSheet转换csv与逗号作为小数分隔符



我正在编写一个php脚本,将csv转换为xlsx。

然后问题是源csv文件有逗号作为小数分隔符,因此,在xlsx目标文件中,带有小数的数字成为字符串。

这是我的代码:

require __DIR__ . '/vendor/autoload.php';
use PhpOfficePhpSpreadsheetSpreadsheet;
use PhpOfficePhpSpreadsheetWriterXlsx;
$spreadsheet = new Spreadsheet();
$reader = new PhpOfficePhpSpreadsheetReaderCsv();
/* Set CSV parsing options */
$reader->setDelimiter(';');
$reader->setEnclosure('"');
$reader->setSheetIndex(0);
/* Load a CSV file and save as a XLS */
$spreadsheet = $reader->load('csv/test.csv');
$writer = new Xlsx($spreadsheet);
$writer->save('test.xlsx');
$spreadsheet->disconnectWorksheets();
unset($spreadsheet);

如何告诉$reader将逗号解释为小数分隔符?

由于我找不到我正在寻找的解决方案,我写了这个变通方法:

require __DIR__ . '/vendor/autoload.php';
use PhpOfficePhpSpreadsheetSpreadsheet;
use PhpOfficePhpSpreadsheetWriterXlsx;
$spreadsheet = new Spreadsheet();
$reader = new PhpOfficePhpSpreadsheetReaderCsv();
$reader->setDelimiter(';');
$reader->setEnclosure('"');
$reader->setSheetIndex(0);

$content = file_get_contents('csv/test.csv');
$content = str_replace(',','.',$content);
$tmpfilename = 'cache/test.csv';
file_put_contents($tmpfilename, $content);
$spreadsheet = $reader->load($tmpfilename);
unlink($tmpfilename);
$writer = new Xlsx($spreadsheet);
$writer->save('test.xlsx');
$spreadsheet->disconnectWorksheets();
unset($spreadsheet);

在csv文件中,我将,替换为.,并将其保存为临时文件