PHP导出CSV文件 /*PHP导出CSV文件CSV文件是一个标准的文本文件,用逗号分隔分列数据1、将要导出的数据按行、列连接成字符串并写入文件即可。2、此处是直接将CSV文件向浏览器窗体推送
/* PHP导出CSV文件 CSV文件是一个标准的文本文件,用逗号分隔分列数据 1、将要导出的数据按行、列连接成字符串并写入文件即可。 2、此处是直接将CSV文件向浏览器窗体推送也提供下载保存 3、此分代码不完整 */ public function export_Out_ShebeiCsv(){ $filename='全部设备列表.csv'; //$db这是传入的数据集 //第1行是字段名,使用表字段注释来显示 //$sqlstr="select COLUMN_NAME,column_comment from INFORMATION_SCHEMA.Columns where table_name='shebei' and table_schema='viedonet'"; //是一个二维数组,一维索引,二维关联 $sqlstr="select column_comment from INFORMATION_SCHEMA.Columns where table_name='shebei' and table_schema='viedonet'"; $btArr=Db::query($sqlstr); $csv=''; foreach ($btArr as $k => $v) { $csv.=$v['column_comment'].','; } $csv=preg_replace('/,$/', "\r\n", $csv);//把最后一个逗号换成换行符号 $encode = mb_detect_encoding($csv, array("ASCII",'UTF-8',"GB2312","GBK",'BIG5'));//检测当前字符集 $csv=iconv($encode, "GB2312", $csv);//将字符转成GB2312,不然得到文件会是乱码! $ls_csv=''; if($db){//当数据集合非空时才循环,不然出错 foreach ($db as $k => $v) {//循环提取要导出的数据.一维是索引数组,二维是关联数据 foreach ($v as $kn => $vn) { $ls_csv.=$vn.','; } $ls_csv=preg_replace('/,$/', "\r\n", $ls_csv);//把最后一个逗号换成换行符号 } $encode = mb_detect_encoding($ls_csv, array("ASCII",'UTF-8',"GB2312","GBK",'BIG5'));//检测当前字符集 } $csv.=iconv($encode, 'GB2312', $ls_csv); $this->export_csv($filename,$csv); } public function export_csv($filename,$data){ header("Content-type:text/csv"); header("Content-Disposition:attachment;filename=".$filename); header('Cache-Control:must-revalidate,post-check=0,pre-check=0'); header('Expires:0'); header('Pragma:public'); echo $data; }