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

问题描述 投票:0回答:2

这可能吗?还是必须使用 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()

提前感谢所有积极的投入和建议。

php phpexcel phpspreadsheet phpoffice
2个回答
3
投票

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

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

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

但是如果你只想写一个csv文件;那么使用 PHP 的内置

fputcsv()
函数比设计用于处理具有多个工作表、格式、公式和使用多种不同文件格式等的真正电子表格的库要好得多

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

fwrite()
.

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


0
投票

来自文档: 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);
© www.soinside.com 2019 - 2024. All rights reserved.