4

这可能吗?还是必须使用 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 数据的字符串?

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

4

1 回答 1

3

您不需要加载文件,您可以使用直接创建一个空的电子表格对象

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

PHPSPreadsheet 文档中的“Hello World”示例所示

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

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

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

于 2019-02-07T18:38:32.410 回答