Выгрузка данных в Excel. Создание csv файлов

Рецепт №73. Из книги «128 рецептов php»
Перейти к оглавлению

Зачастую в процессе разработке появляется необходимость выгрузки данных. Одним из самых удобных и читабельных способов является запись данных в таблицу excel. Excel файл может иметь несколько расширений – xls, xlsx, csv и тд. Самым удобным форматом с точки зрения генерации является csv, поскольку он устроен гораздо проще других. В таком файле столбцы таблицы разделяются каким-либо символом, который потом можно указать при открытии файла с помощью MS Office. По умолчанию символом-разделителем является точка с запятой, его и стоит использовать во избежание проблем при дальнейшем чтении файла. А для разделения строк в csv файлах используется перенос строки. Таким образом, получается, что для создания excel файла, достаточно создать текстовый файл, используя в нужных местах необходимые разделители столбцов и строк. Еще одним важным моментом, при генерации csv файлов, является кодировка файла. Для корректного отображения кириллицы следует использовать windows-1251.
Пример:

// массив имитирует данные, 
// полученные, например, из базы данных
$data = array(
	array(
		'строка1 столбец1', 
		'строка1 столбец2', 
		'строка1 столбец3'
	),
	array(
		'строка2 столбец1', 
		'строка2 столбец2', 
		'строка2 столбец3'
	),
	array(
		'строка3 столбец1', 
		'строка3 столбец2', 
		'строка3 столбец3'
	)
);

// строка, которая будет записана в csv файл
$str = ''; 
// перебираем все данные
foreach($data as $value){
	$str .= $value[0].';'.$value[1].';'.$value[2].";\r\n";
}
// задаем кодировку windows-1251 для строки
$str = iconv("UTF-8", "WINDOWS-1251",  $str);
// создаем csv файл и записываем в него строку
file_put_contents('test.csv', $str);

В приведенном примере, использовалась ранее не описанная функция — iconv. Она позволяет преобразовывать текст в нужную кодировку.

Рассказать друзьям:


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*