使用 PhpSpreadsheet 从字符串创建 CSV 文件

Creating a CSV File from a string using PhpSpreadsheet

这可能吗?或者必须使用 PHP 库,例如 thephpleague/csv?

示例,根据 PhpSpreadsheet 的文档:

$reader      = new \PhpOffice\PhpSpreadsheet\Reader\Csv();
$spreadsheet = $reader->load($file);

$writer = new \PhpOffice\PhpSpreadsheet\Writer\Csv($spreadsheet);
$writer->setUseBOM(true);
$writer->setDelimiter(',');
$writer->setEnclosure('');
$writer->setLineEnding("\r\n");
$writer->setSheetIndex(0);

$writer->save('test.csv');

如您所见,这完全适得其反,因为 load() 方法需要一个实际的 $file 来做基本相同的事情。

有没有一种方法可以不使用电子表格而是使用包含 CSV 数据的字符串来使用 PhpOffice\PhpSpreadsheet\Writer\Csv()

提前感谢所有积极的意见和建议。

您不需要加载文件,您可以直接使用

创建一个空的电子表格对象
$spreadsheet = new PhpOffice\PhpSpreadsheet\Spreadsheet();

PHPSPreadsheet documentation

中的"Hello World"例子所示

但是如果你只想写一个csv文件;那么使用 PHP 的内置 fputcsv() 函数比设计用于处理具有多个工作表、格式、公式和使用多种不同文件格式等的真正电子表格的库要好得多。

或者简单地编写一个已经连接的字符串(你确定你已经引用了所有需要引用的内容,并转义了所有需要转义的内容),只需使用 fwrite().

适得其反的做法是构建您自己的 csv 字符串,然后使用电子表格库编写每一行。