[摘要]本篇文章给大家带来的内容是关于php如何导出csv文件(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。/** 如果大量数据导出 支持分页写入* [DownloadDat...
本篇文章给大家带来的内容是关于php如何导出csv文件(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
/** 如果大量数据导出 支持分页写入
* [DownloadDate 公共导出csv]
* @param string $name [文件名称]
* @param array $header [表头]
* @param array $data [数据集]
* @param $is_header [真 假 是否取表头 解决循环写入问题]
* @return array name[文件名称] filePath[文件路径]
*/
public static function DownloadData($name='',$header=array(),$data=array(),$is_header=true){
set_time_limit(0);
ini_set('memory_limit','2048M');
header("Content-type:application/vnd.ms-excel");
header("content-Disposition:filename=downloaded.pdf ");
try {
if (!$name !$data) {
throw new BadRequestHttpException('参数不可为空');
}
$filePath = "./temp/download/{$name}.csv";
$header = implode(",",$header);
$header = iconv('UTF-8', 'GBK//IGNORE', $header);
$header = explode(",", $header);
$fp = fopen($filePath, 'a+');
if (!empty($header) && is_array($header) && $is_header) {
fputcsv($fp, $header);
}
foreach ($data as $row) {
$str = implode("@@@@",$row);
$str = iconv('UTF-8', 'GBK//IGNORE', $str);
$str = str_replace(","," ",$str);
$row = explode("@@@@", $str);
fputcsv($fp, $row);
}
unset($data);
if(ob_get_level()>0){
ob_flush();
}
flush();
} catch (Exception $e) {
throw new BadRequestHttpException($e->getMessage());//抛出异常
}
return [
'filePath'=>ltrim($filePath,"./"),
'name'=>$name.'.csv',
];
}