我有一个Excel文件,我想把它转换成CSV。我的Excel文件有一些单元格是格式化的,因此显示了1234.56
。
。
问题是,当我将Excel文件转换为CSV时,使用PHPSpreadSheet:
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
use PhpOffice\PhpSpreadsheet\Writer\Csv;
$reader = new Xlsx();
$spreadsheet = $reader->load('path_to_excel_file.xlsx');
$writer = (new Csv($spreadsheet))
->setEnclosure('')
->setLineEnding("\n")
->setDelimiter(';');
$writer->setSheetIndex(0);
$writer->save('path_to_csv.csv');
CSV文件中的值存储为1234.56 €
(包括空格和符号),而我希望将它们存储为1234.56
。
我知道,在LibreOffice中,当将Excel转换为CSV时,您可以指定是按原样存储值还是将其格式化。
对于如何使用PHP (理想情况下使用PHPSpreadSheet )执行此操作,您有什么想法吗?
发布于 2022-09-07 01:59:23
根据手册,您只需要在加载excel表之前设置Read data only
选项。
请查看以下更新的代码:
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
use PhpOffice\PhpSpreadsheet\Writer\Csv;
$reader = new Xlsx();
// set the Read data only option
$reader->setReadDataOnly(true);
$spreadsheet = $reader->load('path_to_excel_file.xlsx');
$writer = (new Csv($spreadsheet))
->setEnclosure('')
->setLineEnding("\n")
->setDelimiter(';');
$writer->setSheetIndex(0);
$writer->save('path_to_csv.csv');
https://stackoverflow.com/questions/73632052
复制