问题打印到CSV文件

时间:2017-08-30 04:45:25

标签: php csv io output

我正在直接打印到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); 
}

发生的事情是循环中数组中的文本被打印到文件中 - 但前两行没有。对于我的生活,我无法理解。

欢迎任何建议,谢谢。

3 个答案:

答案 0 :(得分:1)

由于https://stackoverflow.com/users/8011997/rtfm,这已经解决了。 解决方案是 - 我想发送到文件的值必须是数组。所以我将它们转换为数组 - (数组)$ var_Name-并且它工作得很好。

谢谢!

答案 1 :(得分:0)

尝试使用

$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本身得到了这个。已经使用了很长时间了。如果要保留格式

,这很有用

答案 2 :(得分:0)

当fputcsv失败时,你也可以使用fwrite函数。