打印到CSV文件的问题
问题描述:
我直接打印到CSV文件,以便用户可以保存查询结果,在这种情况下,从存档中复制报告。打印到CSV文件的问题
我的数据是两位信息 - 标题和日期,我试图添加到文件的前面,然后是报表的行。
$f = fopen('php://memory', 'w');
// loop over the input array
// Add report title
fputcsv($f, $reportname, $delimiter);
//add the date
fputcsv($f, $reportdate, $delimiter);
//add report text
foreach ($array as $line) {
// generate csv lines from the inner arrays
fputcsv($f, $line, $delimiter);
}
会发生什么是从循环中的数组文本打印到文件中 - 但前两行没有。对于我的生活,我无法弄清楚。
任何建议将受到欢迎,谢谢。
答
尝试使用
$file='Statement '.$date.".csv";
header('Content-Type: application/csv');
header('Content-Disposition: attachment; filename="'.$file.'";');
然后就回声出在CSV格式的内容。
$ct = count($data);
$ctr = 0;
foreach($datas as $data) {
//workaround for removing quotes
$val = explode(",", $data);
//create a seperate function for this
$cv = count($val);
$cvi = 0;
foreach ($val as $k => $v){
echo $v;
//append comma except for last word
$cvi++;
if($cvi < $cv)
echo ",";
}
$ctr++;
if ($ctr < $ct) echo "\n";//except for last line terminate with \n
}
我有类似的问题,并从SO本身得到这个。长期以来一直在使用它。如果你想保持格式化,这很有用
+0
我没有尝试这种方法,因为另一种解决方案工作并且需要对代码进行较少的更改 - 但谢谢。 –
答
这已经解决了,归功于https://stackoverflow.com/users/8011997/rtfm。 解决方案是 - 我想发送到文件的值必须是数组。所以我将它们转换为数组 - (数组) - $ var_Name-并且它完美地工作。
谢谢!
答
你也可以在fputcsv失败时使用fwrite函数。
$ reportname,$ reportdate都设置并且是数组?可以测试'fputcsv($ f,array('nameeeeeeeeeeeee'),$ delimiter);' – rtfm
解决了它。谢谢。那很完美。 –
我很困惑,根据你选择的答案解决了它 – rtfm