Создать и скачать CSV на PHP

Пример создания CSV с разделителем строки ";"

Разделитель CSV

Код:

        // 1
        $fp = fopen('./fileName.csv', 'w');
        if ($fp === false) {
            // 2
            exit('Can not create file (No Rights) ./fileName.csv');
        }
        
        // 3
        $models = [
            [
                'name' => 'Visa',
                'type' => 'Card',
                'balance' => '10.0'
            ],
            [
                'name' => 'Master',
                'type' => 'Card',
                'balance' => '0'
            ]
        ];
        
        // 4
        fwrite($fp, '"Имя";"Тип";"Баланс"' . "\n");         
        foreach ($models as $v) {            
            fwrite($fp, '"' . $v['name'] . '";"'
                    . $v['type'] . '";"'                    
                    . $v['balance'] . '"'                    
                    . "\n");            
        }
        
        // 5
        fseek($fp, 0);
        fclose($fp);
        
        // 6
        $data = file_get_contents('./fileName.csv');
        
        // 7
        header('Content-Type: text/csv'); // 7.1
        header('Content-Disposition: attachment; filename="fileName.csv"'); // 7.2
        header("Content-Transfer-Encoding: binary"); // 7.3
        header('Expires: 0'); // 7.4
        header('Pragma: no-cache'); // 7.5
        header("Content-Length: ".strlen($data)); // 7.6
        
        // 8
        exit($data);

Примечание:

Чтобы сработали header, перед срабатыванием кода не должно быть BOM и любого вывода информации.

1 - Создаем файл fileName.csv в корне сайта для записи.

2 - Предупреждаем про ошибку, если нет прав на запись.

3 - Массив значений, который мы будем обрабатывать

4 - Запись в файл. '"Имя";"Тип";"Баланс"' . "\n" (";" - разделитель строки,  "\n" - перенос строки).

5 - Возвращаем указатель на начало файла и закрываем файл (сохраняем).

6 - Считываем файл заново.

7 - Даем заголовки для возможности скачать файл.

7.1 - Параметр определяющий тип файла.

7.2 - Указатель на прикрепление файла.

7.3 - В каком виде передавать (в данном случае в бинарном).

7.4, 7.5 - Указатель чтобы не кешировать файл и постоянно отдавать актуальный.

7.6 - Размер контентной части файла.

8 - Выводим информацию, которая в связке с заголовками даст возможность скачать ее в CSV файл.

Результат:

Результат CSV

304 0

Комментарии

Пока нет ни одного отзыва. Оставьте отзыв первым
Только авторизованные пользователи могут оставлять комментарии Вход

Похожие статьи

Долгое хранение корзины в интернет-магазине

Рассмотрим варианты популярные варианты хранения товаров в корзине в интернет-магазине. Обозначим плюсы и минусы таких хранений. Рассмотрим варианты долгосрочного хранения корзины.