Подтвердить что ты не робот

Создание csv файла с php

Я хочу создать CSV файл, но когда я запускаю код, он возвращает пустую страницу и не CSV файл. Я использую PHP 5. Я использую следующий код:

<?php
    $data = array ('aaa,bbb,ccc,dddd',
                   '123,456,789',
                   '"aaa","bbb"');

    $fp = fopen('data.csv', 'w');
    foreach($data as $line){
             $val = explode(",",$line);
             fputcsv($fp, $val);
    }
    fclose($fp);
?>

Спасибо!

4b9b3361

Ответ 1

Это пусто, потому что вы пишете в file. Вы должны написать в output используя вместо этого php://output а также отправить информацию заголовка, чтобы указать, что это csv.

пример

header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="sample.csv"');
$data = array(
        'aaa,bbb,ccc,dddd',
        '123,456,789',
        '"aaa","bbb"'
);

$fp = fopen('php://output', 'wb');
foreach ( $data as $line ) {
    $val = explode(",", $line);
    fputcsv($fp, $val);
}
fclose($fp);

Ответ 2

@Baba ответ отличный. Но вам не нужно использовать explode, потому что fputcsv принимает массив в качестве параметра

Например, если у вас есть документ с тремя столбцами и четырьмя строками, вот более прямая версия:

header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="sample.csv"');

$user_CSV[0] = array('first_name', 'last_name', 'age');

// very simple to increment with i++ if looping through a database result 
$user_CSV[1] = array('Quentin', 'Del Viento', 34);
$user_CSV[2] = array('Antoine', 'Del Torro', 55);
$user_CSV[3] = array('Arthur', 'Vincente', 15);

$fp = fopen('php://output', 'wb');
foreach ($user_CSV as $line) {
    // though CSV stands for "comma separated value"
    // in many countries (including France) separator is ";"
    fputcsv($fp, $line, ',');
}
fclose($fp);

Ответ 3

я надеюсь, что пример будет полезен для вас

$data= "Sr. No.,Vendor Name,Cargo Type,Amount,Delivery Address,Pickup Time,Delivery Time\n";

        $i = 1;
        if(!empty($detail)) {
            foreach ($detail as $list) {

                $data .= $i.",";
                $data .= any data
                $data .= any data
                $data .= any data
                $data .= any data
                $data .= any data
                $data .= any data
                $data .="\n";
                $i++;

            }
        }

        header("Content-Type: application/csv");
        $csv_filename = 'anyfilename.xlsx';
        header("Content-Disposition:attachment;filename=".$csv_filename);
        $fd = fopen ($csv_filename, "wb");
        fputs($fd,$data);
        fclose($fd);
        echo $data;
        die();