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

时间:2019-02-07 10:39:18

标签: php phpexcel phpspreadsheet phpoffice

这可能吗?还是必须使用thephpleague/csv之类的PHP库?

示例,根据 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数据的字符串?

预先感谢所有积极的意见和建议。

1 个答案:

答案 0 :(得分:1)

您无需加载文件,可以直接使用来创建一个空的Spreadsheet对象

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

PHPSPreadsheet documentation

中的“ Hello World”示例所示

但是,如果您只想编写一个csv文件,就可以了。那么使用PHP内置的fputcsv()函数要比设计用来处理具有多个工作表,格式,公式以及使用多种不同文件格式等的真正电子表格的库要好得多。

或者只是写一个已经连接的字符串(您确定已经引用了所有需要引用的内容,并且转义了所有需要转义的内容),只需使用fwrite()

具有反效果的功能是建立您自己的csv字符串,然后使用电子表格库编写每一行。