PHP массив в файл CSV

Пример как преобразовать массив в CSV и сохранить его диске или отдать на скачивание.

Имеем массив $prods:

$prods = array(
	array(
		'id' => '697',
		'name' => 'Динамический ортез-стоподержатель',
		'category' => 'Ортезы',
		'price' => '35990 RUB',
	),    
	array(
		'id' => '698',
		'name' => 'Бандаж на коленный сустав',
		'category' => 'Ортезы',
		'price' => '3610 RUB',
	),    
	array(
		'id' => '699',
		'name' => 'Бандаж на плечевой сустав',
		'category' => 'Ортезы',
		'price' => '3700 RUB',
	),
);
PHP

Также массив можно заполнить данными из БД:

// Подключение к БД.
$dbh = new PDO('mysql:dbname=НАЗВАНИЕ_БД;host=localhost', 'ЛОГИН', 'ПАРОЛЬ');

$sth = $dbh->prepare("SELECT * FROM `prods`");
$sth->execute();
$array = $sth->fetch(PDO::FETCH_ASSOC);

$prods = array();
foreach($array as $row) { 
	$prods[] = array(
		'id'       => $row['id'],
		'name'     => $row['name'],
		'category' => $row['category'],
		'price'    => $row['price'],
	);
} 
PHP

Преобразуем массив в CSV с помощью функции fputcsv, в качестве разделителя используется ;.

Отдача файла на скачивание

header("Content-type: text/csv"); 
header("Content-Disposition: attachment; filename=file.csv"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 

$buffer = fopen('php://output', 'w'); 
fputs($buffer, chr(0xEF) . chr(0xBB) . chr(0xBF));
foreach($prods as $val) { 
	fputcsv($buffer, $val, ';'); 
} 
fclose($buffer); 
exit();
PHP

Сохранение файла на сервере

$buffer = fopen(__DIR__ . '/file.csv', 'w'); 
fputs($buffer, chr(0xEF) . chr(0xBB) . chr(0xBF));
foreach($prods as $val) { 
	fputcsv($buffer, $val, ';'); 
} 
fclose($buffer); 
exit();
PHP

Строка fputs($buffer, chr(0xEF) . chr(0xBB) . chr(0xBF)); добавляет в начало файла метку BOM, благодаря этому файл откроется в Excel с нормальной кодировкой.

Результат

Содержание файла file.csv

697;"Динамический ортез-стоподержатель";Ортезы;"35990 RUB"
698;"Бандаж на коленный сустав";Ортезы;"3610 RUB"
699;"Бандаж на плечевой сустав";Ортезы;"3700 RUB"

Открытый в Excel

PHP масив в файл CSV

14.06.2019, обновлено 19.06.2019 349

Поделится

Темы

Excel Files PHP

Другие публикации

К сожалению разработчики прекратили поддержку и разработку проекта, но PHPExcel все равно остается популярной...
Класс ZipArchive позволяет быстро и удобно работать с ZIP-архивам, рассмотрим основные возможности класса.
Набор PHP функций для работы с файлами и директориями, получение списка файлов в папке, безопасное сохранение файлов.
Пример создания файла карты сайта (sitemap.xml) на PHP. Интеграция его на сайт и подключение его в robots.txt
parse_url($url, $component) – стандартная функция, разбирает URL-адрес на компоненты в виде массива.