php 生成csv文件并提示保存

我想编写一个csv文件输出的程序,用户输入相关信息之后,点击按钮提示用户保存路径,输出的文件类型是“.csv”的,该程序不使用数据库,只是对文本进行操作,也就是用户输入的... 我想编写一个csv文件输出的程序,用户输入相关信息之后,点击按钮提示用户保存路径,输出的文件类型是“.csv”的,该程序不使用数据库,只是对文本进行操作,也就是用户输入的信息存入文本“2009-02.csv中”,之后用户再输入信息,还是存储在该文本中,进行换行。
一个月进行一次新文本的更新,如何控制用户输入信息和csv文件的格式呢?
例如
”a”,”b”,”c”,”d”,”e”
”1”,”2”,”3”,”4”,”5”
”6”,”7”,”8”,”9”,”0”
我下面写的代码输出的只有“姓名,住所,电话,说明”,如何让用户输入的信息存储在文本中呢?请高手指教,成功之后再加分
<?php

mb_http_output("SJIS");
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:attachment;filename=2009-01.csv");
echo "姓名,住所,电话,说明";

session_start();

$_SESSION['data']=$_POST;

$handle=fopen("2009-01.csv","a+");

$data=join(",",$_SESSION['data']);

fwrite($handle,$data."\r\n");
while($str = fgets($handle)){

$str = fgets($handle);
echo ($str? ",":"");

}
fclose($handle );

?>
我用正则表达式解决问题了,但是如果在用户输入信息的时候输入'单引号的话,用excel打开的时候要求显示这个单引号,例如输入'77用excel显示的时候也是'77我现在用的正则表达式将"和,都过滤掉了,但是用excel显示的时候,对于输入的'77只显示77,请问怎么也能让'也在excel中表示呢?我的正则 $value = preg_replace("/[\"|,]/","",$value);
展开
 我来答
IT互联天下
推荐于2016-11-23 · 知道合伙人软件行家
IT互联天下
知道合伙人软件行家
采纳数:1437 获赞数:5161
PHP开发工程师

向TA提问 私信TA
展开全部
 <?php
 //文件名
 $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;
?>
溜须拍马关云长
2009-02-26 · TA获得超过1708个赞
知道大有可为答主
回答量:2443
采纳率:0%
帮助的人:0
展开全部
照你这样做,还得同时让用户上传以前的csv文件呀

或者你在服务器上保存不同用户最新的csv文件也是可行的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lichengbyd
2009-02-27 · TA获得超过1485个赞
知道大有可为答主
回答量:1479
采纳率:0%
帮助的人:1066万
展开全部
csv文件的格式你应该清楚吧.

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

至于过滤引号,如果没有专门的函数就自己写一个,可以一个字符一个字符读, 碰到引号跳过.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lszh123
2009-02-27
知道答主
回答量:17
采纳率:0%
帮助的人:15.9万
展开全部
你这句 fwrite($handle,$data."\r\n"); 就已经把$data写到文件了啊
接着下面再fgets($handle)的话是读不到内容的,因为这时指针在文件的最后
你应该在fwrite后fclose,这样文件就保存了
输出的话不用再读文件,所有数据都在$data里啊,按csv格式输出就行
另外建议你用fputcsv函数,不用你过滤和转义字符
给个例子:
<?php
$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);
?>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式