我正在直接打印到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 :(得分: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函数。