Простая генерация csv файла в PHP (со скачиванием)

Сгенерировать csv файл в PHP достаточно просто,  достаточно учесть несколько нюансов.

В данном случае рассмотрим пример, где сгенерированный фай будет сразу скачиваться в браузере.

 

Тут надо учитывать один важный момент - до вывода файла не должно быть никакого другого вывода (никаких echo и т.д.  иначе будет ошибка "Cannot modify header information - headers already sent" и файл не сформируется корректно). 

Пример кода для генерации csv файла:

header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="countries.csv"');
$csv = [];
$csv[] = array('ID', 'Страна'); //заголовок таблицы

//содержимое таблицы:
$csv[] = [1, 'Россия'];
$csv[] = [2, 'Китай'];
$csv[] = [3, 'Франция'];

$fp = fopen('php://output', 'wb');
foreach ($csv as $line) {
fputcsv($fp, $line, ','); //разделитель может быть запятая или ; в зависимости от страны использования
}
fclose($fp);

Сначала создаем массив $csv с содержимым. Тут для упрощения примера ввели несколько значений вручную, на практике есть смысл заполнять массив в цикле, к примеру данными из базы. 

Далее в отдельном цикле записываем содержимое нашего массива в файл. 

Комментарии

Комментариев пока нет, вы можете оставить свой: