Создание файла CSV из строки с использованием PhpSpreadsheet - PullRequest
0 голосов
/ 07 февраля 2019

Возможно ли это?или нужно использовать библиотеку 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?

Заранее благодарим за все положительные отзывы и предложения.

1 Ответ

0 голосов
/ 07 февраля 2019

Вам не нужно загружать файл, вы можете создать пустой объект электронной таблицы напрямую, используя

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

, как показано в примере «Hello World» в документации PHPSPreadsheet

Но если все, что вы хотите сделать, это написать CSV-файл;тогда вам гораздо лучше использовать встроенную в PHP функцию fputcsv(), чем библиотеку, предназначенную для управления подлинными электронными таблицами с несколькими таблицами, форматированием, формулами и работой с несколькими различными форматами файлов и т. д.

Или простодля написания строки, которая уже объединена (вы уверены, что вы цитировали все, что нужно заключить в кавычки, и избежали всего, что нужно экранировать), просто используйте fwrite().

Неэффективным является создание вашей собственной строки csv изатем используйте электронную таблицу для записи каждой строки.

...