Выгружаем CSV
автоматическая генерация и выгрузка CSV-файла в PHP
Выгрузка данных в формате CSV с помощью PHP требует изменения структуры кода, в отличии от большинства автоматически генерируемых файлов. Для создания CSV-файла потребуются функция header()
и поток php://output
.
А теперь обратимся к каждому этапу формирования CSV-файла.
Заголовки
Установка заголовков HTTP-запроса необходима при автоматической выгрузке файлов. Таким образом, браузер получает необходимые инструкции и меняет свое поведение. Убедитесь, что функция header()
идет в выводе первой и перед ее вызовом отсутствуют HTML-теги и пустые строки.
Необходимо установить следующие параметры заголовка:
// Тип контента
header('Content-type: application/csv');
// Имя файла
header('Content-Disposition: attachment; filename=myCSV.csv');
// Кодировка
header("Content-Transfer-Encoding: UTF-8");
Обратите внимание на вторую строку кода, приведенного выше - здесь Вы создаете имя для своего CSV-файла.
Формирование CSV
Следующим шагом мы используем функцию fopen()
для записи данных не в конечный файл, а в поток вывода:
// Настройка записи в выходной буфер
$f = fopen('php://output', 'a');
Запись и выгрузка данных
На последнем этапе мы запишем в файл фиктивные CSV-данные, закроем файл и выгрузка начнется:
// Запись CSV-данных
fputcsv($f, ["cell1", "cell2", "cell3"]);
// Закрываем файл
fclose($f);
// ... старт выгрузки файла
Финальный код
// Тип контента
header('Content-type: application/csv');
// Имя файла
header('Content-Disposition: attachment; filename=myCSV.csv');
// Кодировка
header("Content-Transfer-Encoding: UTF-8");
// Настройка записи в выходной буфер
$f = fopen('php://output', 'a');
// Запись CSV-данных
fputcsv($f, ["cell1", "cell2", "cell3"]);
// Закрываем файл
fclose($f);
// ... старт выгрузки файла
Спасибо за внимание.