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;
}
