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

Зачастую в процессе разработке появляется необходимость выгрузки данных. Одним из самых удобных и читабельных способов является запись данных в таблицу 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. Она позволяет преобразовывать текст в нужную кодировку.
Теги:
excel, xls, xlsx, csv, MS Office, iconv
Добавлено: 30 Марта 2018 06:25:10 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...