Рецепт №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. Она позволяет преобразовывать текст в нужную кодировку.
