通过PHP导出到CSV

2,619次阅读

共计 964 个字符,预计需要花费 3 分钟才能阅读完成。

在处理数据时候经常要生成 csv 文件, 下面代码片断就是简单的生成文件下载文件:

<?php

function arrayToCsv(array &$array) {if (count($array) == 0) {return null;
   }
   ob_start();
   $df = fopen("php://output", 'w');
   fputcsv($df, array_keys(reset($array)));
   foreach ($array as $row) {fputcsv($df, $row);
   }
   fclose($df);
   return ob_get_clean();}

function downloadSendHeaders($filename) {// disable caching
    $now = gmdate("D, d M Y H:i:s");
    header("Expires: Tue, 03 Jul 2001 06:00:00 GMT");
    header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate");
    header("Last-Modified: {$now} GMT");

    // force download  
    header("Content-Type: application/force-download");
    header("Content-Type: application/octet-stream");
    header("Content-Type: application/download");

    // disposition / encoding on response body
    header("Content-Disposition: attachment;filename={$filename}");
    header("Content-Transfer-Encoding: binary");
}

Usage example:

$array = [['aaa', 'bbb', 'ccc', 'dddd'],
    ['123', '456', '789'],
    ['"aaa"', '"bbb"']
];
downloadSendHeaders("data_export_" . date("Y-m-d") . ".csv");
echo arrayToCsv($array);

正文完
 
Blood.Cold
版权声明:本站原创文章,由 Blood.Cold 2019-06-03发表,共计964字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。