有时候在项目中需要这样一种功能:把数据库里面的数据查询出来后,保存到csv文件里面。然后下载到客户端。开发思路:
先把需要查询的数据从数据库里面查询出来;
把需要查询出来的数据写入到csv文件里面;
保存到客户端(浏览器);
模拟生产(项目)情况,代码清单如下:
<?php /** * 实现下载csv文件 */ //模拟数据 $users = array ( array ( "username" => "刘德华" , "age" =>56, "work" => "演戏" ), array ( "username" => "张学友" , "age" =>55, "work" => "唱歌" ), ); $filename = date ( 'Ymd' ). '.csv' ; data2csv( $users , $filename ); /** *@param $data array 从数据库里面查询出来的数据 *@param $download_file_name string 客户端下载后的文件名 */ function data2csv( $data , $download_file_name ){ header( "Content-type:text/csv" ); //保存文件的类型 header( "Content-Disposition:attachment;filename=" . $download_file_name ); //保存文件的名字 header( 'Cache-Control:must-revalidate,post-check=0,pre-check=0' ); header( 'Expires:0' ); header( 'Pragma:public' ); ob_start(); //开启ob缓存 echo "\xEF\xBB\xBF" ; $df = fopen ( "php://output" , 'w' ); $head = array_keys (reset( $data )); fputcsv ( $df , $head ); //保存第一行 foreach ( $data as $row ){ fputcsv ( $df , $row ); } fclose( $df ); echo ob_get_clean(); } |
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦