Создание 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);
?>
Спасибо!
Ответы
Ответ 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();