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

64jmpszr  于 2023-03-16  发布在  PHP
关注(0)|答案(2)|浏览(125)

这是可能的吗?或者必须使用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来做本质上相同的事情。
有没有办法不使用电子表格而使用PhpOffice\PhpSpreadsheet\Writer\Csv(),而是使用包含CSV数据的字符串?
提前感谢所有积极的意见和建议。

ztyzrc3y

ztyzrc3y1#

您不需要加载文件,可以使用以下命令直接创建空的Spreadsheet对象

$spreadsheet = new PhpOffice\PhpSpreadsheet\Spreadsheet();

如PHPSP阅读表文档中的“Hello World”示例所示
但是如果你只想写一个csv文件;那么使用PHP的内置fputcsv()函数要比使用一个库好得多,这个库被设计用来操作真正的电子表格,包括多个工作表、格式、公式以及处理多种不同的文件格式等。
或者只是编写一个已经连接的字符串(您确定已经引用了需要引用的所有内容,并转义了需要转义的所有内容),只需使用fwrite()
相反,构建自己的csv字符串,然后使用电子表格库来编写每一行。

ttisahbt

ttisahbt2#

来自文档:https://phpspreadsheet.readthedocs.io/en/latest/topics/reading-and-writing-to-file/#csv-comma-separated-values
也可以将字符串视为CSV文件的内容,如下所示:

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv();
$spreadsheet = $reader->loadSpreadsheetFromString($data);

相关问题