Простая генерация 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 с содержимым. Тут для упрощения примера ввели несколько значений вручную, на практике есть смысл заполнять массив в цикле, к примеру данными из базы.
Далее в отдельном цикле записываем содержимое нашего массива в файл.
Комментарии