2017-08-30 44 views
0

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

会发生什么是从循环中的数组文本打印到文件中 - 但前两行没有。对于我的生活,我无法弄清楚。

任何建议将受到欢迎,谢谢。

+0

$ reportname,$ reportdate都设置并且是数组?可以测试'fputcsv($ f,array('nameeeeeeeeeeeee'),$ delimiter);' – rtfm

+0

解决了它。谢谢。那很完美。 –

+0

我很困惑,根据你选择的答案解决了它 – rtfm

回答

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本身得到这个。长期以来一直在使用它。如果你想保持格式化,这很有用

+0

我没有尝试这种方法,因为另一种解决方案工作并且需要对代码进行较少的更改 - 但谢谢。 –

1

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

谢谢!

0

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