这是可能的吗?或者必须使用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数据的字符串?
提前感谢所有积极的意见和建议。
2条答案
按热度按时间ztyzrc3y1#
您不需要加载文件,可以使用以下命令直接创建空的Spreadsheet对象
如PHPSP阅读表文档中的“Hello World”示例所示
但是如果你只想写一个csv文件;那么使用PHP的内置
fputcsv()
函数要比使用一个库好得多,这个库被设计用来操作真正的电子表格,包括多个工作表、格式、公式以及处理多种不同的文件格式等。或者只是编写一个已经连接的字符串(您确定已经引用了需要引用的所有内容,并转义了需要转义的所有内容),只需使用
fwrite()
。相反,构建自己的csv字符串,然后使用电子表格库来编写每一行。
ttisahbt2#
来自文档:https://phpspreadsheet.readthedocs.io/en/latest/topics/reading-and-writing-to-file/#csv-comma-separated-values
也可以将字符串视为CSV文件的内容,如下所示: