这可能吗?还是必须使用 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对象
$spreadsheet = new PhpOffice\PhpSpreadsheet\Spreadsheet();
如 PHPSPreadsheet 文档中的“Hello World”示例所示
但是如果你只想写一个csv文件;那么使用 PHP 的内置
fputcsv()
函数比设计用于处理具有多个工作表、格式、公式和使用多种不同文件格式等的真正电子表格的库要好得多
或者简单地写一个已经连接的字符串(你确定你已经引用了所有需要引用的东西,并转义了所有需要转义的东西),只需使用
fwrite()
.
适得其反的是构建你自己的 csv 字符串,然后使用电子表格库来编写每一行。
您还可以将字符串视为 CSV 文件的内容,如下所示:
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv();
$spreadsheet = $reader->loadSpreadsheetFromString($data);