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