php 生成csv文件并提示保存

2025-01-06 14:52:54
推荐回答(4个)
回答1:

  //文件名
 $filename="test.csv";
 
 //数据(具体的根据需要做处理,如果是从数据库查询,原理与此类似,只需设置好写入格式和数据即可。
 $data="测试csv";

//设置header
header("Content-type:text/csv");
header("Content-Disposition:attachment;filename=".$filename);
header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
header('Expires:0'); header('Pragma:public');
echo $data;
?>

回答2:

照你这样做,还得同时让用户上传以前的csv文件呀

或者你在服务器上保存不同用户最新的csv文件也是可行的

回答3:

csv文件的格式你应该清楚吧.

是用逗号分隔每行的几个数据的.
存的时候写一个数据,再写个逗号,再写一个数据,...
写完一行数据,再换行就行了.

至于过滤引号,如果没有专门的函数就自己写一个,可以一个字符一个字符读, 碰到引号跳过.

回答4:

你这句 fwrite($handle,$data."\r\n"); 就已经把$data写到文件了啊
接着下面再fgets($handle)的话是读不到内容的,因为这时指针在文件的最后
你应该在fwrite后fclose,这样文件就保存了
输出的话不用再读文件,所有数据都在$data里啊,按csv格式输出就行
另外建议你用fputcsv函数,不用你过滤和转义字符
给个例子:
$list = array (
'aaa,bbb,ccc,dddd',
'123,456,789',
'"aaa","bbb"'
);
$fp = fopen('php://output', 'w');

foreach ($list as $line) {
fputcsv($fp, split(',', $line));
}
fclose($fp);
?>